Skip to content
Back to skills

Ls Codex Heartbeat Checks

ASecurity

Opt-in agent heartbeat harness for target repositories: initialize config, run transaction-safe checks, preserve artifacts, and wire cron only after explicit activation.

  • 6 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 7, 2026
ai-agentspythonbashrailsgit

Works with

  • cli

Security analysis

A100/100

Pro scans all 15 files and shows the line behind each finding

Scanned November 7, 2026

npx -y skills add CruxExperts/LocalSetup --skill ls-codex-heartbeat-checks --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Ls Codex Heartbeat Checks?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Ls Codex Heartbeat Checks
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/cruxexperts-ls-codex-heartbeat-checks/badge)](https://www.skillsdirectory.com/skills/cruxexperts-ls-codex-heartbeat-checks)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: ls-codex-heartbeat-checks
description: "Opt-in agent heartbeat harness for target repositories: initialize config, run transaction-safe checks, preserve artifacts, and wire cron only after explicit activation."
metadata:
  version: "1.4"
compatibility: "Python 3.12+, PyYAML, LocalSetup.4 harness CLI."
---

# Agent Heartbeat

Use this skill when a repository needs an explicit, auditable heartbeat harness for periodic checks run by a configured agent CLI. The runtime is client-neutral: each profile supplies its own executable argv, prompt transport, and launcher mode.

## Guardrails

- Installing this skill only makes the harness available. It does not create config, cron entries, or autonomous runs.
- Activate per target repo with `localsetup harness codex-heartbeat init` and `enable`.
- Use `configure-lscli` to preview an existing provider/runtime connection, with
  explicit `--mode review|coding`, `--provider-profile` and `--grant`. Review
  requires explicit `--context` files; coding requires `--resource-parent`.
  `--apply` preserves unrelated settings and backs up exact prior bytes privately.
  It selects the agent for manual runs without enabling heartbeat or cron. An
  enabled recurring agent must first switch to collection only or be disabled.
  Static configuration checks do not resolve credentials or prove run readiness.
- `readiness` inspects the selected LSCli agent without hooks, provider requests,
  credential resolution or state creation. `--probe` explicitly attempts one
  bounded execution: review discloses only selected granted context; coding
  exercises native preflight with no model tools. Keep static evidence, probe
  evidence and live schedule/collection readiness distinct. Never retry a failed
  probe automatically or silently fall back to another mode.
- Ordinary transaction artifacts stay under the configured ignored target heartbeat
  state directory (default `.localsetup/state/codex-heartbeat/`). Reserved actions
  retain separate private attempt/accounting evidence as described in
  [artifacts](references/artifacts.md).
- `enable --install-crontab` refuses to install a live crontab unless `--yes` is also passed.
- Scheduled execution defaults to collection only. `enable --with-agent` validates
  the configured enabled profile before selecting reviews; `--collection-only`
  restores collection-only scheduling. Repeated enable and disable preserve the
  selected mode. Generated `run --scheduled` commands read that selection anew.
- Live crontab updates own one target-specific block, preserve unrelated entries,
  retain a compressed backup, and reconcile write acknowledgements by readback.
  Ambiguous markers, changed owned blocks and unresolved writes stop updates.
  A legacy unmarked entry is preserved; inspect it before an explicit migration
  to avoid enrolling the same target twice.
- Put routine inventory collection in `hooks.before`: these commands run before
  agent resolution. Agent setup or execution failure still records a failed run
  and preserves completed collection artifacts; it does not run `hooks.after`.
- Ordinary `run --no-agent` skips agent profile loading and launcher resolution entirely,
  then exercises configured hooks, lock acquisition, recovery, command logging,
  staged validation, and atomic promotion. Broken or missing agent configuration
  does not prevent this transaction check; normal agent runs still validate it.
  With reserved-action controller options, `--no-agent` instead returns an early
  skip before configuration, locks, hooks or transaction checks. See
  [reserved runs](references/config.md#running-a-reserved-action).
- An ordinary run acquires `heartbeat.lock` before inspecting or changing active and staged state. It reclaims only a same-host lock whose owner PID is absent and whose age meets `heartbeat.stale_after_seconds`, then unlinks that held stale pathname and retries exclusive acquisition. Ambiguous locks remain locked for manual review.
- Direct hooks reject `git commit`, `git push`, and blocked destructive executables unless their specific policy switches are enabled; Git global options are parsed before the subcommand check.
- Every executed or policy-blocked ordinary-run command receives a sidecar.
  Promotion validates hashes for the result, command log, and every logged
  sidecar. Reserved execution uses the same overlap lock but its own
  [protected result evidence](references/process-control.md#reserved-execution-owner).
- Agent profiles record execution; they are not a sandbox replacement.

## Rule ownership

This skill owns heartbeat harness behavior. `HARNESS_AUTOMATION.md` is the public reference for the same guardrails; changes to activation, artifacts, transaction handling, or cron wiring belong here first.

- Heartbeat is opt-in per target repo.
- New cron cadence must be faithfully representable: integer minute divisors of
  60, or whole-hour divisors of 24. Enabling rejects other intervals before
  changing configuration. Disabling preserves an existing trigger schedule.
  See the timezone and wall-clock limits in [configuration](references/config.md).
- Cron activation is delegated to explicit harness commands and should be coordinated with `ls-cron-job-scheduling` when broader scheduling is involved.
- Runtime evidence stays in ignored target state, not public framework docs.

## Activation and evidence workflow

Use `ls-localsetup-framework-changes` for repository checks and `ls-cron-job-scheduling`
for scheduling coordination. Preserve the explicit activation gates throughout
this lifecycle:

1. Inspect the target paths, configuration, cron manifest, and launcher with `plan`.
2. Use `init` to create `HEARTBEAT.md` and configuration with heartbeat disabled.
3. Use `enable` to update the heartbeat configuration and cron manifest while
   preserving unrelated tasks; retain the live-crontab confirmation gate above.
4. Validate a run with `--no-agent` when appropriate. Success requires validated
   staged artifacts and atomic promotion, as defined in `references/transactions.md`.
5. Inspect configuration, cron, lock, latest pointer, and run evidence with `status`.
6. Use `disable` to stop future heartbeat runs without deleting historical artifacts.

Record activation, validation, and artifact locations in the run ledger.

## Commands

```bash
localsetup harness codex-heartbeat plan
localsetup harness codex-heartbeat init
localsetup harness codex-heartbeat configure-lscli --help
localsetup harness codex-heartbeat readiness
localsetup harness codex-heartbeat enable
localsetup harness codex-heartbeat status
localsetup harness codex-heartbeat budget
localsetup harness codex-heartbeat run --no-agent
localsetup harness codex-heartbeat disable
```

`budget` is read-only. It reports policy, summary, and task reservations from `heartbeat.task_queue_path` when configured; it does not spawn agents or enforce scheduling.

Standalone runtime script:

```bash
python3 ls/skills/ls-codex-heartbeat-checks/scripts/codex_heartbeat.py --target-root . --no-agent
```

## References

- `references/config.md`
- `references/artifacts.md`
- `references/recovery.md`
- `references/command-logging.md`
- `references/process-control.md`
- `references/transactions.md`

## LSCli coding runs

The unselected `lscli-heartbeat` template profile uses an owned protected
registration, explicit provider configuration and task grant, stdin prompt, and
validated JSONL completion. Configure its absolute paths and bounded limits
using [the typed profile contract](references/config.md#typed-lscli-profile)
before selecting it. Planning and `--no-agent` do not call a provider.
Activation, credentials, delegated sandbox capability, and recurring authority
remain explicit. Generic client profiles retain their existing launcher modes.

For advice without model tools, explicitly select the unselected `lscli-review`
template using the [read-only review contract](references/config.md#read-only-lscli-review).
It uses the verified SDK runtime, selected provider and bounded read/disclosure
grant without requiring a native tool sandbox. Collection finishes before context
is read. Saved advice is private data and must never be executed automatically.

## Controller accounting

Use [controller accounting commands](references/config.md#controller-accounting-commands)
for reviewed private policy initialization, resource inspection, and result-bound
progress dispositions. These commands neither run an agent nor close an external
issue. Keep accounting and controller inputs outside the writable workspace.
Use [explicit reserved actions](references/config.md#running-a-reserved-action)
for task-wide enforcement and compound compaction. Ordinary fresh profiles do
not acquire that authority from an accounting file's existence.

Files in this skill

  • SKILL.md8.6 KB
  • references/artifacts.md1.3 KB
  • references/command-logging.md1.9 KB
  • references/config.md23.2 KB
  • references/process-control.md7.5 KB
  • references/recovery.md4.2 KB
  • references/transactions.md1.4 KB
  • scripts/codex_heartbeat.py25.3 KB
  • scripts/codex_heartbeat_support.py17.7 KB
  • scripts/heartbeat_lscli.py4.6 KB
  • scripts/heartbeat_process.py5.9 KB
  • scripts/heartbeat_protocol.py4.1 KB
  • scripts/heartbeat_review.py5.8 KB
  • templates/HEARTBEAT.md728 B
  • templates/codex_heartbeat.yaml1.8 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.