Commit Graph

70 Commits

Author SHA1 Message Date
Bo 6d5d111faf feat(skills): land four-vendor skill corpus (#803)
## Summary
- Lands the AgentOps skill corpus across source and Codex wrappers,
including Gemini image targets.
- Integrates the skill branch onto current origin/main and refreshes
generated manifests/catalogs.
- Normalizes local next-work queue enum drift and fixes shellcheck in
alias-collision validation.

## Validation
- bash scripts/regen-all.sh --check
- bash scripts/validate-skill-schema.sh
- bash tests/skills/test-token-budgets.sh
- bash tests/skills/run-all.sh
- bash scripts/audit-codex-parity.sh && bash
scripts/validate-codex-override-coverage.sh && bash
scripts/validate-codex-generated-artifacts.sh --scope worktree && bash
scripts/validate-codex-api-conformance.sh && bash
scripts/validate-codex-runtime-sections.sh && bash
scripts/lint-codex-native.sh
- bash skills/heal-skill/scripts/heal.sh --strict
- PRE_PUSH_SKIP_MKDOCS=1 bash scripts/pre-push-gate.sh --fast

MkDocs strict remains skipped locally via the documented
PRE_PUSH_SKIP_MKDOCS=1 override because the repo currently emits
repo-wide strict-link warnings unrelated to this landing; CI remains
authoritative.
2026-06-06 23:44:42 -04:00
Bo b84dcf3ca2 docs(hookless): close cold-start orientation drift (soc-qh2g1 #cold-start-orientation-coherence) (#795)
## Summary

Close the hookless cold-start orientation gap for `soc-qh2g1` by making
the live startup docs and skills point at explicit `ao session
bootstrap` plus pulled context (`ao inject` / `ao lookup`) instead of
hidden SessionStart behavior.

## Changes

- Reframes live docs that still implied automatic startup/handoff
injection to the hookless explicit-command path.
- Updates source and Codex skill mirrors for `quickstart`, `inject`,
`using-agentops`, `recover`, `bug-hunt`, and `session-bootstrap`.
- Expands the cold-start and docs drift gates so `SessionStart hook`,
`startup hooks`, and `auto-inject ... hook` promises fail unless
explicitly hedged as opt-in, removed, or historical.
- Refreshes scoped Codex skill hashes for the touched mirrors.

## Test plan

- [x] `bash scripts/check-hookless-cold-start.sh`
- [x] `bash scripts/check-doc-hooks-drift.sh`
- [x] `bats tests/scripts/check-hookless-cold-start.bats
tests/scripts/check-doc-hooks-drift.bats`
- [x] `shellcheck scripts/check-hookless-cold-start.sh
scripts/check-doc-hooks-drift.sh`
- [x] `bash scripts/regen-codex-hashes.sh --check --only
session-bootstrap,quickstart,inject,using-agentops,recover,bug-hunt`
- [x] `bash scripts/validate-codex-generated-artifacts.sh`
- [x] `bash scripts/validate-codex-lifecycle-guards.sh`
- [x] `bash scripts/validate-agents-split.sh`
- [x] `git diff --check`
- [x] `bash scripts/validate-skill-runtime-parity.sh`
- [x] `bash scripts/lint-codex-native.sh`

Closes-scenario: soc-qh2g1#cold-start-orientation-coherence
Bounded-context: BC1-Corpus
Evidence: scripts/check-hookless-cold-start.sh
2026-06-06 11:23:56 -04:00
Bo 1601467387 chore(docs): gut dead-mechanism context poison from agent-facing docs (ag-sjz8 #gut-poison) (#764)
## What

Gut **context poison** — agent-facing docs that route a working agent at
DEAD mechanisms. This poisoned a live fleet-operating session (the bo
driver building the go-dark supervisor) into proposing `ao rpi` as a
continuity-loop worker. Found via a 5-way parallel poison fan-out.

**Scope: operational-surgical** (Bo's explicit call). Gut the
agent-facing *operational* guidance + *factual* errors; **LEAVE** the
README/`docs/3.0.md` product narrative (Gas-City-as-reference-substrate
is coherent, ADR-backed product design — a different altitude from Bo's
live fleet).

## Changes (10 files, surgical)

**Tier A — operational guidance (the poison that bit me):**
- `CLAUDE.md` Session Constraints: "route multi-phase work through `ao
rpi`" → the live substrate (NTM + MCP Agent Mail + `continuity-loop`);
`gc` reframed as optional-out-of-session, **not** the live substrate.
Kept the accurate "bridge REMOVED" + "load-bearing legacy" lines.
- `AGENTS.md`: dropped the deleted "scheduling daemon" (ADR-0009).
- `AGENTS-RUNTIME.md`: `ao rpi serve --help` → the real `ao` command
surface.

**Tier B — hookless-factual** (3.0 installs no hooks by default):
hookless banners on `ARCHITECTURE.md` + `reference.md` (surgical vs.
rewriting diagram internals); corrected SessionStart-hook prose in
`context-packet.md` + `vs-claude-flow.md`.

**Tier C — retired `/dream` shown as live:** marked retired in
`evolve`/`harvest`/`using-agentops` (compounding moved to Gas City).
`curate` **intentionally left** — its `--mode=dream` is the forward
replacement, not poison.

## Guardrails
- Does **not** claim `ao rpi` was deleted — the command still compiles
(`loop`/`phased`/`serve` exist); only its role as the *live workflow* is
corrected.
- registry.json unaffected (skill **bodies** only; `generate-registry.sh
--check` = OK).

## Evidence
`bash scripts/generate-registry.sh --check` → OK. Diff is 20 insertions
/ 16 deletions across 10 files.

Bounded-context: BC1-Corpus (agent-facing context docs)
Evidence: this PR diff + the parallel fan-out inventory
Closes: ag-sjz8

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-06-06 09:44:45 -04:00
Bo 8ad6747913 chore(ao): delete the ao evolve CLI surface (ag-llni slice 1) (#724)
**Slice 1 of ag-llni** — retire `ao rpi`/`ao evolve` (orchestration is
no longer an in-CLI engine). This PR removes the **`ao evolve`** half;
the `rpi*.go` + phased web is slice 2.

**Architecture (operator-confirmed 2026-06-04):** orchestration is
two-tier — *inner loop* (one session) = skills/CLIs/native-subagents +
**Workflows** (`.claude/workflows/operating-loop.js` + `bead-crank.js` —
the Claude encoding of inner-orchestration that was mis-shaped as
`rpi`/`evolve`); *outer loop* (many sessions) = **NTM +
mcp-agent-mail**. Codex inner-loop = NTM + agent-mail for now. Leaf CLIs
(`corpus`/`goals`/flywheel/knowledge loops = BC1 corpus), NTM, and
agent-mail all stay.

### Changes
- Deleted `ao evolve` + 4 subcommands (`config`, `next-work`, `blocked`,
`write-stop-marker`) — 10 files.
- Relocated the one non-evolve coupling, `countCronHistoryRows`, into
its sole consumer `cron_self_adjust.go`.
- Removed `evolve` from the `cobra_commands_test.go` golden
`expectedCmds` list (2 sites).
- Regenerated `cli/docs/COMMANDS.md` (−125 lines) +
`docs/cli-skills-map.md`.

### Verification
- `go build ./...` green · `go vet ./cmd/ao` clean · **`go test
./cmd/ao` = 9251 pass**.
- Net: 13 files, −2192 LOC.

Bounded-context: BC5-Runtime
Closes-scenario: ag-llni#delete-evolve-cli
Evidence: cli/cmd/ao/cron_self_adjust.go
Test-Removal-Reason: ao evolve CLI surface retired (ag-llni) —
orchestration moved to .claude/workflows + NTM; the 5 deleted
evolve_*_test.go covered now-deleted command code, not kept behavior.

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-06-05 00:21:53 +00:00
Bo 6072dceac5 docs(substrate): reconcile doctrine — skill-dispatch + drop Gas City reference (ag-88y5 #docs-skills-dispatch-reframe) (#696)
## What
Two bounded doctrine-reconciliation slices (one coherent arc):

**ag-88y5** — the out-of-session dispatch unit is the `/rpi`·`/evolve`
**skill**, not the `ao rpi`/`ao evolve` CLI. Per the 3.0
skills-are-the-runtime thesis (using-ntm #693 already frames it this
way), re-narrate the **live** doctrine surfaces so the substrate spawns
an agent that *runs the /rpi skill* over a bead:
- docs/3.0.md, docs/architecture/canonical-loop-model.md,
docs/runbooks/nightly-evolution.md
- skills/using-agentops, skills/agent-native,
skills/domain/references/factory.md

Historical surfaces (MIGRATION-3.0, ADR-0009, release notes) +
CLI-reference left as-is; the actual `ao rpi`/`ao evolve` CLI removal is
the **ag-iowf** epic (live automation callers — overnight-evolve,
release-smoke — must migrate first).

**ag-ogp5** — drop the 4 docs still asserting Gas City as THE reference
substrate → NTM+MCP+managed-agents:
- docs/ARCHITECTURE.md, docs/SCHEMAS.md,
docs/contracts/agents-write-surfaces.md,
docs/patterns/completion-notifications.md (Pattern C)

The ~37 historical/illustrative GC refs are intentionally retained (per
ag-ogp5 scope).

## Verification
regen-all --check, embedded-sync, heal --strict, registry-drift,
codex-rpi-contract, codex-artifacts --scope head — all green.

Closes-scenario: ag-88y5#docs-skills-dispatch-reframe
Bounded-context: BC4-Factory
Evidence: docs/3.0.md
2026-06-03 12:11:23 +00:00
Bo 59b2391b6d feat(skills): add AgentOps-owned using-ntm substrate-orchestration skill (ag-zaoj #using-ntm-skill) (#693)
## What

Adds an **AgentOps-owned, shippable `using-ntm` skill** — the missing
NTM leg of the `NTM + MCP + managed-agents` substrate doctrine
(**ag-zaoj**). Until now `automation-shape-routing` pointed **by name**
at the *proprietary* `ntm`/`vibing-with-ntm` skills, which AgentOps
can't ship — a dangling pointer for standalone users. This is original
content modeled on (not copied from) those.

## The seam: skills are the runtime, not the CLI

The skill teaches driving the open `ntm` CLI as the out-of-session
substrate: **NTM spawns Claude/Codex panes that run the `/rpi` and
`/evolve` *skills*** over a bead queue. It explicitly does **not** use
`ao rpi`/`ao evolve` CLI subprocesses — those terminal wrappers are
retired; the substrate dispatches the whole loop as one invocable skill.

## What lands (15 files, +~440)

- `skills/using-ntm/SKILL.md` + `skills-codex/using-ntm/SKILL.md` (twin)
— the new skill.
- `automation-shape-routing` (+ codex twin) — dangling
`ntm`/`vibing-with-ntm` pointers now route to the owned `/using-ntm`;
`ntm` stays as the CLI tool.
- Six derived surfaces regenerated: `registry.json`, skill-domain-map,
SKU catalog, codex hashes/manifest, context-map; + skill-disposition row
and skill-count bumps (80 → 81) in PRODUCT / ARCHITECTURE / SKILLS /
domain-map / BDD-Gherkin.

## E2E verification (against the real `ntm` CLI)

Per the directive (no `ao rpi`/`ao evolve`): verified every `ntm`
subcommand the skill cites exists
(`spawn/send/activity/attach/doctor/deps/kill/health`) and **fixed the
documented flag to the real `--pane=N` syntax** (it had `--pane N`).
`ntm doctor` runs (bv ✓ / bd ✓ / am ⚠). `docs/cli-surface.*` drift
excluded (pre-existing, unrelated).

## Follow-up (not in this PR)

`ao rpi`/`ao evolve` CLI are slated for retirement; `docs/3.0.md` + the
recent Gas City-prune PRs still reference `ao rpi <bead>` as the
dispatch unit and need a skills-not-CLI reconciliation pass.

## Verification

- `regen-all.sh --check` ALL GREEN · registry-drift PASS · codex parity
PASS · skill-isolation/size PASS · markdownlint 0.

Closes-scenario: ag-zaoj#using-ntm-skill
Bounded-context: BC4-Factory
Evidence: skills/using-ntm/SKILL.md

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-06-03 00:19:22 +00:00
Bo 6685eac0c9 feat(skills): bd-first memory migration — Phase 2 migrate (ag-5u50 #phase2-migrate) (#692)
## Phase 2 — migrate salvaged memory onto bd (epic `ag-5u50`)

**Stacked on #691 (Phase 1).** Review/merge that first; this PR's diff
is Phase-2-only.

Second arc of the **bd-first-memory-migration** skill: take the Gate-A
keepers and stand up bd as the single source of truth — typed memories
with provenance, decay-ranked recall, a generated MEMORY.md cache, and
one unified write path.

### What's in it (beads ag-5u50.10–.14)
- **`.11` `mem.py`** — typed wrapper over bd keys (fenced `<!--mem-->`
header), injectable `BdStore`/`FakeStore` adapter, `parse`/`render` +
**decay-rank** per DATA-MODEL.
- **`.12` `recall.py`** — decay-ranked, token-budgeted recall; bumps
`access_count` (the read signal feeding utility/promotion).
- **`.14` `gen_memory_md.py`** — regenerate the thin, read-only
MEMORY.md cache from bd (permanently fixes the bloat mode).
- **`.13` `remember.py`** — unified write entrypoint (all harnesses →
bd).
- **`.10` `import_memories.py`** — idempotent salvage import with
provenance + import-ledger, **write-paced** (bd auto-commit OOM guard),
`--dry-run`.

### Verification
- **11 hermetic L2 tests** (`tests/test_phase2_migrate.py`), no
`bd`/`ao` dependency — round-trip, decay ordering, supersede exclusion,
episodic-vs-feedback decay, access bump, idempotent import, dry-run,
write-path provenance — all green (17 total with Phase 1).
- **7 Gherkin scenarios** (`references/migrate.feature`).
- Scripts 100-col clean; codex twin hashes refreshed; full local gate
sweep green (skill-lint, codex artifacts/coverage, registry,
context-map, counts, three-gap).

> **CI note:** opened on **local-green** — GitHub Actions stopped
dispatching workflow runs repo-wide ~20:20 (a GitHub-side outage/quota
issue, not this code). All gates verified locally; cloud CI will run
once dispatch recovers.

### Scope guardrails
Writes to bd only — no Phase-3 GC/retire here (that's gated behind the
rollback test). The destructive dogfood on the live box stays
human-gated (Gate C).

Closes-scenario: ag-5u50#phase2-migrate
Bounded-context: BC1-Corpus
Evidence: skills/bd-first-memory-migration/tests/test_phase2_migrate.py

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-06-02 19:07:05 -04:00
Bo 0d82c6e20c docs(skills): re-narrate live Gas City substrate framing to NTM+MCP+managed-agents (ag-94vu #live-substrate-renarration) (#684)
## What

Round-2 Gas City doctrine sweep (**ag-94vu**). Re-narrates the **5 named
skill surfaces** that still framed Gas City as THE live reference
substrate (present-tense operator instructions) to the canonical
substrate trio — **NTM (tmux swarm) + MCP (`ao mcp serve`) +
managed-agents (`ao agent`)** — matching [`docs/3.0.md`](docs/3.0.md).
Driver: post-mortem checkpoint #6 Judge-3 FAIL ("the repo does not yet
speak one doctrine").

## Surfaces (9 insertions / 9 deletions, 5 files)

- `skills/domain/references/factory.md` — "Gas City is the reference
substrate" → the NTM/MCP/managed-agents trio; "Mayor-driven / `gc
sling`" → **swarm-driven** dispatch.
- `skills/scope/SKILL.md` — cron-cadence orchestration reference.
- `skills/session-bootstrap/SKILL.md` — substrate submit reference.
- `skills/SKILL-TIERS.md` — dream retired-pointer note.
- `skills-codex/using-agentops/SKILL.md` — **codex-twin parity**:
dropped the stale `gc` runtime-mode row for the canonical `substrate`
row (the Claude twin was already correct; this one slipped in #679).

## Bounded by design

This PR is the coherent **"live skill operator-instructions speak one
doctrine"** slice. A repo-wide grep shows ~35 more refs across other
skills + `docs/` narrative; bundling them would reproduce the #682
mega-PR that was rejected for sprawl. Deferred to tracked follow-ups:

- **ag-r6g1** — round-3 narrative sweep (remaining skills/ + docs/ ~35
refs; many docs already frame GC correctly as "the reference" — triage
required).
- **ag-82pv** — remove orphaned
`GasCityPhaseEvidence*`/`GasCityTranscript*` dead types in
`cli/internal/rpi/artifacts.go`.

## Verification (local, green)

- codex-parity-drift: PASS · registry-drift: PASS (80) ·
skill-catalog-drift: up-to-date · skill-isolation: PASS · skill-size:
0/0 · markdownlint: 0 errors.
- Residual live-substrate grep over the 5 surfaces: clean.

Closes-scenario: ag-94vu#live-substrate-renarration
Bounded-context: BC1-Corpus
Evidence: skills/domain/references/factory.md
2026-06-02 14:41:43 -04:00
Bo 7455382416 refactor(gc): strip Gas City coupling; adopt NTM+MCP+managed-agents (ag-124p) (#679)
## What

Operator-authorized (Bo, 2026-06-02). Strips the remaining **Gas City**
(`gastown`) coupling from AgentOps and reconciles the **split-doctrine
state** on `main` that the #672–#676 post-mortem flagged: canonical docs
(#676) said NTM+MCP+managed-agents while user-facing docs still
described Gas City as the reference substrate.

The out-of-session substrate is now uniformly **NTM** (local tmux swarm)
+ **MCP** (`ao mcp serve`, shipped) + **managed-agents** (`ao agent`).
AgentOps adopts a substrate; it owns none. Closes **ag-124p** (and
resolves **ag-h93p** — the claude.json gc-hook decouple).

## Deleted (load-bearing surfaces, per the bead's verified scope)

- `packs/agentops/` (the reference City) + root `city.toml`
- `skills/using-gc` + `skills-codex/using-gc` (+
`tests/scripts/using-gc-skill.bats`)
- `gc prime/nudge/mail/hook` wiring in `cli/hooks/claude.json` → now
hookless, matching 3.0 doctrine

## Doc sweep (the split-doctrine fix the post-mortem required)

- **README.md, docs/MIGRATION-3.0.md, docs/dependencies.md,
docs/activation-profiles.md** re-narrated to the substrate trio (the
four files the verdict named)
- AGENTS.md / CLAUDE.md substrate bullets; `dream` skill (+codex twin)
retirement pointer; `shared` / `agent-native` / `using-agentops`
cross-refs; skill-dispositions, context-map, sku-catalog, google-sre
convergence map

## Regenerated derived surfaces

Skill counts (81→80), `registry.json`, `skills/catalog.json`,
context-map, skill-domain-map, codex hashes (14) + manifest, SKILL-TIERS
— all via the generators, validated drift-free.

## Scope boundaries / follow-ups

- **`cli/internal/doctor/fix_bridges.go`** still carries a gc-bridge
detector/fixer subsystem. Out of the bead's verified scope; degrades
gracefully (stat-checks, returns empty when `gc`/`city.toml` absent);
removing it is a test-backed Go change → **follow-up bead**.
- **CLAUDE.md "Gas City bridge — REMOVED"** note kept intentionally:
it's an anti-re-coupling record, not substrate-framing.
- The local-only **bd-closeout** pre-push check (not in CI) is a
pre-existing gap on `main` (its AGENTS.md has no `bd dolt push` line) —
untouched here.
- `thesis-stability` gate FAIL, if present, is the pre-existing
README/PRODUCT/GOALS tagline drift, unrelated to this PR (my
README/PRODUCT edits are the dependency table + skill-count numbers, not
the tagline).

## Verification

`go build ./...` + `go vet` green · skill schema (80/80) + integrity
(heal --strict clean) + lint suite (0 fail) + codex parity green ·
sku-catalog & context-map drift gates green · zero broken markdown links
to deleted paths.

Closes-scenario: ag-124p#gc-coupling-strip
Bounded-context: BC5-Runtime
Evidence: docs/MIGRATION-3.0.md
2026-06-02 09:06:41 -04:00
Bo 03d2aaa8d7 feat(skills): add /agent-native — make out-of-session agents AgentOps-native, hooklessly (ag-2wln #agent-native) (#616)
## What

First child of **ag-7s9fo** (Make Managed/SDK agents AgentOps-native).
Adds the **/agent-native** dual-runtime skill documenting the **hookless
reframe** of the retired "port the ~50 hooks" idea.

An out-of-session Claude (Managed Agent / Agent SDK loop / self-hosted
sandbox) becomes AgentOps-native via three things — **never hooks**:
1. **Bundle AgentOps skills** into the Agent definition (same `skills/`
files, no fork).
2. **Expose the `ao` CLI as a callable tool** (MCP/shell-tool) so the
loop self-bootstraps + self-validates.
3. **Gate outputs through the SAME CI** as interactive work.

Extends `standards` + `converter`. The SDK hooks become an *optional
thin adapter*, never the enforcement boundary. Managed Agents are NOT
ZDR → no holdout/PII in the agent definition.

## How

Built through the hardened scaffold (ag-cw2y → ag-ekyq → ag-j4l1) — all
6 derived surfaces regenerated in one shot (registry, domain-map,
context-map, counts, codex twin+manifest+marker, dispositions
BC5-Runtime, SKILL-TIERS, using-agentops catalog, embedded sync).
Reverted the swept-in pre-existing drift (6 codex hashes + cli-surface)
per the changed-files-scoped triage.

Caught + fixed an `INVALID_AO_CMD` heal finding: `ao standards` isn't a
command — `standards` is a loaded checklist enforced via `ao validate` +
CI (corrected the references).

## Scope note

The skill documents the *intended* `ao agent bundle` / `ao mcp serve` /
`agent-output-validate.yml` surfaces — those are the sibling child beads
(ag-jspr, ag-higd, ag-mptr). This PR is the skill-doc slice only.

## Evidence

- `heal.sh --strict skills/agent-native` → clean
- `audit-codex-parity.sh --skill agent-native` → pass
- `validate-codex-generated-artifacts.sh --scope worktree` → pass
- `generate-{registry,skill-domain-map}.sh --check` → clean;
`check-registry-drift.sh` → no drift

Closes-scenario: ag-2wln#agent-native
Bounded-context: BC5-Runtime
Evidence: skills/agent-native/SKILL.md
2026-05-29 23:28:11 -04:00
Bo 79a4558902 feat(skills): add /eval-outcomes — Outcomes as a holdout-safe projection of the locked eval substrate (ag-hdqu0.8 #eval-outcomes-skill) (#613)
## What

Adds the **/eval-outcomes** dual-runtime skill — the user-facing
documentation wrapper for the already-merged `ao eval outcomes
compile/ingest` capability (the Outcomes epic ag-hdqu0, capability beads
.1/.2/.4/.5/.6/.7/.9 all merged). This is the final ag-hdqu0 child.

eval-outcomes documents Outcomes as a **grading transport** that EXTENDS
`validation` + `ratchet` — a *projection* of the locked eval substrate
(`SCHEMA.md`), never an alternate bar. Holdout `target`/`ground_truth`
never leaves the boundary (Managed Agents are not ZDR).

## How

Built through the ag-cw2y scaffold + the 6-surface new-skill discipline
in one shot:
- `skills/eval-outcomes/SKILL.md` + `skills-codex/eval-outcomes/`
(parity_only twin + prompt.md)
- override catalog + manifest/marker (`register-new-codex-skill.sh`)
- dispositions row (BC2 Validation) + SKILL-TIERS row + using-agentops
catalog
- registry.json SKU catalog + domain-map + context-map + narrative
counts + embedded sync

Reverted pre-existing-main drift swept in by generators (6 unrelated
codex artifact hashes, cli-surface.*) per the changed-files-scoped
triage.

## Evidence

- `audit-codex-parity.sh --skill eval-outcomes` → pass
- `heal.sh --strict skills/eval-outcomes` → clean
- `validate-codex-override-coverage.sh` → 80 skills pass
- `validate-codex-generated-artifacts.sh --scope worktree` → pass
- `generate-{registry,skill-domain-map,context-map}.sh --check` → clean;
`check-registry-drift.sh` → no drift

(Local fast pre-push gate references a missing
`scripts/audit-codex-hooks.sh` — pre-existing gate-infra drift absent on
main, not this PR; CI is the authoritative gate.)

Closes-scenario: ag-hdqu0.8#eval-outcomes-skill
Bounded-context: BC2-Validation
Evidence: skills/eval-outcomes/SKILL.md
2026-05-29 21:35:17 -04:00
Bo e4e32a3374 feat(orchestration): dual-runtime OrchestrationPort foundation (ag-nk67 #orchestration-foundation) (#598)
## What

The **dual-runtime OrchestrationPort foundation** — the seam that gates
the
`[EPIC] AgentOps × Claude Managed Agents integration (dual-runtime)`
application epics.
Implements the 3-category model (Claude Workflow / NTM swarm / plain
skill) behind a
single `OrchestrationPort` with safe degradation **NTM → Claude-native →
beads floor**
and a global `AGENTOPS_ORCHESTRATION=off` opt-out.

Derived from a live 3-legged spike (`~/dev/agentops-3cat-spike/`): safe
degradation is
solvable at the selection layer; parallel buys quality/independence not
wall-clock at
small N; NTM is a multi-vendor control plane that runs Claude/Codex as
panes.

## What's in it (10 slices, agent-team driven)

- **Port + adapters** — `cli/internal/ports/orchestration.go` (idiomatic
to existing ports pattern) + new `cli/internal/orchestration/` pkg:
`Selector`, `ntm_probe` (capability detection via `ntm
--robot-capabilities`, not `command -v`), `beads_floor` +
`OrchestrationResult` parity type, degradation-conformance test.
- **Live CLI** — `ao orchestrate select` (`--pin`/`--opt-out`/`--json`);
COMMANDS.md regenerated.
- **Contracts** — `schemas/orchestration-{backend,result}.v1` + paired
`docs/contracts/` docs (structural-floor gated: 41 contracts).
- **Prose** — swarm/shared/crank rewritten NTM>native>beads; **gc
demoted** (soc-2rtm0); `rpi_phased_stream.go` doc-comment fixed.
- **Skills** — `automation-shape-routing` (the 3-category router) +
`workflow-builder` + meta-skill authoring chain wired (`context_rel`);
skill counts synced.
- `lib/orchestrate-select.sh` selector seam.

## Verification (local)

`go build ./...` clean · `go vet` clean · **56 Go tests pass**
(orchestration 31, ports 10, cmd/ao orchestrate 15) · structural-floor
PASS (41) · `lib/orchestrate-select.sh --self-test` 6/6 · live command:
`--json`→claude (NTM absent), `--opt-out`→beads, `--pin claude`→claude.

## Notes

- Bundles the foundation + the routing/authoring skills as one coherent
dual-runtime arc.
- NTM/Claude executors are stubs (the parity contract is real); concrete
executors land in the application epics this gates.
- Two-ladders distinction preserved (spawn-backend ladder A vs CLI
phase-executor ladder B) — see `docs/contracts/orchestration-ports.md`.

Closes-scenario: ag-nk67#orchestration-foundation
Bounded-context: BC5-Runtime
Evidence: cli/internal/orchestration/conformance_test.go
2026-05-29 18:42:45 +00:00
Bo de0699a493 feat(skills): operating-loop-workflow skill ships the workflow to plugin users (agentops-7m7a #plugin-deliver-operating-loop) (#595)
## What
Adds a `operating-loop-workflow` skill that delivers the
`operating-loop` Workflow-tool script to **installed plugin users** and
invokes it.

## Why
Claude Code plugins do **not** load `.claude/workflows/*.js` (recognized
components are `skills/`, `commands/`, `agents/`, `hooks/`, …). PR #594
force-added the script so it *ships in the plugin cache*, but an
installed user still wouldn't see `/operating-loop`. This skill is the
delivery vehicle.

## How
On `/operating-loop-workflow`, the skill:
1. Idempotently copies
`${CLAUDE_PLUGIN_ROOT}/.claude/workflows/operating-loop.js` →
`~/.claude/workflows/operating-loop.js` (copy-if-newer; never clobbers
user edits).
2. Invokes `Workflow({name:'operating-loop', args})` (supports
`{mode:'plan'}` for the plan-only half).

Named `operating-loop-workflow` (not `operating-loop`) to avoid
colliding with the workflow's own auto-surfaced `/operating-loop` in the
dev repo.

## Registries updated
- `skills/SKILL-TIERS.md` row + `sync-skill-counts.sh` (→ 76 total, 66
user-facing)
- `docs/contracts/skill-dispositions.yaml` + regenerated
`docs/reference/agentops-skill-domain-map.md` (76/76)
- `docs/contracts/context-map.md`,
`docs/reference/agentops-domain-evolution-bdd.md` count

## Validation
- `scripts/pre-push-gate.sh --fast` passed (registry-drift,
skill-domain-map golden gate, domain-evolution plan all green)
- `generate-skill-domain-map.sh`: 76 skills, 76 dispositions, clean

Closes-scenario: agentops-7m7a#plugin-deliver-operating-loop
Bounded-context: BC3-Loop
Evidence: docs/reference/agentops-skill-domain-map.md

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-05-29 02:30:09 +00:00
Bo b4c6aec361 feat(skills)!: 3.0 consolidation — merge 4, cut 2, resolve 6 keep-flags (81→75) (#533)
## AgentOps 3.0 skill consolidation — reconcile-and-tighten

Resolves all 12 skills flagged `merge-review`/`cut-review` in
`docs/contracts/skill-dispositions.yaml` per the operator-approved
dispositions. **Zero capability loss** — every merged skill's content
lives in its target as a mode/section.

### MERGE (4) — content folded into target, source removed
| Source | Target | How |
|---|---|---|
| expert-council | council | `--mode=debate` (alias triggers documented
in council) |
| oss-docs | doc | `--mode=oss` (refs + `audit-oss-docs.sh` copied into
`doc/`) |
| readme | doc | `--mode=readme` (`readme-craft.md`; `bootstrap`
consumer repointed readme→doc) |
| pr-retro | post-mortem | `--scope=pr` (`pr-scope.md` + gh PR-outcome
mining) |

### CUT (2) — genuinely redundant, no live consumer
- **pr-plan** — folds into `/plan` + `/pr-research`; pr-* chain
repointed.
- **update** — install-script concern; refresh note added to
`using-agentops` + install one-liner.

### KEEP — resolved 6 flags (rationale in `skill-dispositions.yaml`)
`validate` + `curate` (designed-future canonical validator/miner; epic
`soc-cp7pv` GO/REVERT is a separate decision) · `security` (release-gate
driver, distinct from security-suite) · `converter` (packaging adapter
skill-builder consumes) · `knowledge-activation` (outer-loop
operationalization) · `grafana-platform-dashboard` (marketplace
specialization).

### Result
**81 → 75 skills** (65 user-facing + 10 internal). Trunk regenerated
once: skill-counts, skill-catalog, skill-domain-map, context-map,
registry, sku-catalog, codex hashes, embedded-sync. Evals repointed to
absorbed locations.

### Gates verified locally (all green)
lint-skills · heal.sh --strict · skill-schema · skill-frontmatter ·
skill-dependency-check · scenario-test-linkage ·
validate-context-map-drift · check-registry-drift · generate-registry
--check · skill-domain-map golden · validate-sku-catalog-drift ·
bounded-contexts-drift · ci-policy-parity · codex
parity/override-coverage/manifest/generated-artifacts/skill-parity/runtime-sections/backbone/lifecycle
· regen-codex-hashes --check · embedded-sync · validate-skill-count ·
markdownlint · shellcheck (--severity=error) · `cd cli && go build && go
vet && go test ./cmd/ao` (9126 passed).

Closes-scenario: ag-cons#consolidation
Bounded-context: BC1-Corpus
Evidence: .agents/discovery/2026-05-24-skill-consolidation-plan.md
2026-05-24 23:17:27 -04:00
Bo ad69fec1d7 feat(skills): using-gc agent guide + complete tool-dependency declaration (ag-p4p) (#523)
## What

Builds the GC on-ramp for AgentOps 3.0: a `using-gc` skill that guides
agents on the `gc` (Gas City) CLI exactly like the `bd` protocol guides
them, plus a complete, accurate tool-dependency declaration. **Additive
— no existing behavior changed.**

THE MODEL (operator): "use gc like we use bd" — skills GUIDE agents on
the gc workflow; `ao` does NOT wrap gc. gc is a guided out-of-session
dependency, same as bd.

## Changes

1. **New skill `skills/using-gc/`** — agent-facing guide to running
AgentOps on Gas City, mirroring the bd-protocol style. Covers the gc
primitives (City/`city.toml`, Rig, Pack, Agent, Order, Formula, mayor +
refinery), the end-to-end workflow (`gc start` → `gc rig add` → the
mayor-driven dispatch loop: `bd ready` → `gc sling <rig>/refinery
<bead>` → worker runs `ao rpi <bead>`), cron `exec` Orders for
maintenance (`ao compile`/`ao maturity`), and is HONEST about the
order-auto-dispatch gap (no per-fire var-binding → dispatch is
mayor-driven today; order-auto-dispatch is an upstream-GC item,
soc-5jwah). References the real pack at `packs/agentops/` and
`docs/3.0.md`. Two reference docs + a `.feature` (linked +
`@covered-by:` a new bats test).

2. **Complete dependency declaration** — derived from `ao doctor` tool
checks (`ao`, `awk`, `bash`, `bd`, `cass`, `gc`, `git`, `tmux`) +
`scripts/install*.sh` + the shared fallback table. Classified REQUIRED
(ao, git, runtime), TRACKING (bd + Dolt), ORCHESTRATION (gc,
out-of-session), PR/CI (gh), BUILD-FROM-SOURCE (go), UTILITIES (jq, rg,
curl, openssl, sha256sum, tmux, cass). Landed in: `docs/dependencies.md`
(canonical detail, catalogued in documentation-index), a README
"Requirements" section (summary), and the expanded
`skills/shared/SKILL.md` fallback table (now includes gc, gh, go, jq,
rg).

3. **Fixed stale `using-agentops/SKILL.md:212`** — the runtime-mode `gc`
row described the DELETED `runtime=gc` auto-executor ("ao rpi
auto-selects gc executor", "gc event bus"). Reframed to the mayor-driven
reference City: gc dispatches whole `ao rpi`/`ao evolve` loops; there is
no in-CLI `runtime=gc` mode.

4. **Brief gc pointer** in repo `CLAUDE.md` + `AGENTS.md` near the bd
section, pointing to the using-gc skill (no skill content duplicated).

## Gates (all green locally)

- `sync-skill-counts.sh`: 80→81 total, 9→10 internal — PASS, verified
consistent.
- `validate-context-map-drift`: regenerated
docs/contracts/context-map.md — matches.
- Codex twin `skills-codex/using-gc/` created (`$skill` notation, no
Claude primitives); registered across the 4 catalog surfaces;
`regen-codex-hashes.sh` clean; `audit-codex-parity` PASS; 81 codex
artifacts.
- `generate-registry.sh` (81 skills) — up to date.
- skill-domain-map disposition added (BC5 Runtime) + regenerated golden
— matches; registry-drift narrative counts fixed (80→81).
- plugin-load-test (no symlinks — references copied), skill-schema
(81/81), skill-frontmatter (81/81), skill-dependency-check, heal.sh
--strict (clean), scenario-test-linkage (PASS, new .feature linked via
bats), markdownlint (0 errors), doc-release-gate (PASS).
- New bats test `tests/scripts/using-gc-skill.bats` (5/5).
- Codex description aggregate budget bumped 2700→2800 (catalog grew to
81; same precedent as the 2600→2700 bump when expert-council landed).
- `cd cli && go build && go vet && go test ./cmd/ao/` green (embedded
using-agentops copy synced via `make sync-hooks`).

Closes-scenario: ag-p4p#gc-onramp
Bounded-context: BC5-Runtime
Evidence: skills/using-gc/SKILL.md
2026-05-24 19:39:54 -04:00
Bo 1a7e2cb748 feat(ao session bootstrap): universal init prompt (soc-vuu6.25 #ao-session-bootstrap) (#390)
## Summary

`ao session bootstrap` — every agent spawned into an AgentOps repo runs
this first. Output shape is identical regardless of model (the
fungibility contract: swap Claude for Codex on any bead without
re-orienting).

## What

Four fail-open substeps emit fields in
`schemas/session-bootstrap.v1.schema.json`:

| Field | Source | Fallback |
|---|---|---|
| `agents_md_read` + `agents_siblings_read` | `AGENTS.md` +
post-soc-vuu6.3 siblings | `false` / empty array |
| `onboard_phase` | `onboard --auto` (soc-vuu6.9 future) |
`skipped:not-implemented` |
| `ready_beads_count` | `bd ready --json` | `null` |
| `mail_unread_count` | mcp-agent-mail | `null` (wiring is follow-up
bead) |

## Why

The fungibility philosophy mandates one init prompt for every agent
regardless of type. Today every operator hand-rolls orientation; two
agents spawned by two different operators don't share a starting frame.
`ao session bootstrap` is the operational primitive that closes the gap.
Tiny (~270 LOC including helpers), fail-open, deterministic.

## Files

- New: `cli/cmd/ao/session_bootstrap.go` + `_test.go` (8 cases)
- New: `schemas/session-bootstrap.v1.schema.json` (draft-07)
- New: `skills/session-bootstrap/SKILL.md` +
`skills-codex/session-bootstrap/SKILL.md` (mirrored)
- Catalog: `skills/SKILL-TIERS.md`, `skills/using-agentops/SKILL.md`,
`skills-codex/using-agentops/SKILL.md`
- Regenerated: `cli/docs/COMMANDS.md` (sub 196→197, all 269→270),
`registry.json` (cli_commands 173→174),
`PRODUCT.md`/`docs/ARCHITECTURE.md`/`docs/SKILLS.md` (count sync 79→80),
`evals/agentops-core/cli-command-surface-{matrix.json,fixtures/cli-command-surface-smoke.sh}`
(fixture bump)

## Verification

```
cd cli && go build ./... && go test ./cmd/ao/ -run TestSessionBootstrap -count=1
# 8 passed
bash evals/agentops-core/fixtures/cli-command-surface-smoke.sh
# cli-command-headings: top=73 sub=197 all=270 / cli-help-matrix-ok
bash tests/docs/validate-doc-release.sh
# PASS: doc-release gate succeeded
```

Closes-scenario: soc-vuu6.25#ao-session-bootstrap
Bounded-context: BC5-Runtime
Evidence: cli/cmd/ao/session_bootstrap.go
Evidence: cli/cmd/ao/session_bootstrap_test.go
Evidence: schemas/session-bootstrap.v1.schema.json
Evidence: skills/session-bootstrap/SKILL.md
2026-05-21 04:27:09 +00:00
Bo 772d13b8ce feat(skills): ship-loop — bot-paired internal-PR fast-lane cycle (soc-b0nn) (#332)
## What

Promote the 2026-05-18 session pattern from `docs/learnings` (PR #331)
into an invokable skill. Operators can now type `/ship-loop` to load the
discipline; future agents in fresh sessions can invoke it via Skill
tool.

## Distinct from pr-* family

The existing `pr-*` skills (`pr-research`, `pr-plan`, `pr-implement`,
`pr-validate`, `pr-prep`, `pr-retro`) are **tier=contribute** —
fork-based OSS contribution workflow. Their window is `fork`, output is
`code changes on fork branch`.

`ship-loop` is **tier=execution** — internal repo, branch off main,
auto-merge back to main. Sibling skill family, not a replacement.

## What it captures

| Section | Content |
|---|---|
| **9-step cycle** | claim → branch off fresh main → first failing test
→ minimal impl → `pre-push --fast` → commit → push → `gh pr merge
--squash --auto` → `bd close` |
| **Gate sequence** | pre-push --fast, claude-review (auto-fires on PR
open), validate.yml, gh-merge-chain |
| **Anti-patterns (5)** | Bundling pre-existing fixes,
copy-rewrite-leaves-dead-vars, asserting local-only state in CI,
branches off out-of-date main, skipping the failing-test-first step |
| **Failure modes (F1–F5 + meta)** | Each with mechanical guard already
landed this session |
| **Pair mechanics** | claude-review auto-fires on `pull_request:
opened/synchronize` — no @claude mention required |
| **gh-merge-chain dogfooding** | When and how to invoke the multi-PR
sequencer |

## Files

- `skills/ship-loop/SKILL.md` (177 lines)
- `skills/ship-loop/scripts/validate.sh` (78 lines; 17/17 self-checks
PASS)
-
`skills/ship-loop/references/{anti-patterns,examples,gh-merge-chain,test-shape}.md`
- `skills-codex/ship-loop/SKILL.md` (95 lines, slim frontmatter)
- `skills-codex/ship-loop/prompt.md` (35 lines, Codex Execution Profile)

## Registry inventory updates (all automated)

| File | Change |
|---|---|
| `skills/SKILL-TIERS.md` | New row under execution tier |
| `docs/contracts/skill-dispositions.yaml` | BC5 Runtime /
driving-adapter / keep |
| `docs/reference/agentops-skill-domain-map.md` | Regenerated, 78 → 79 |
| `docs/reference/agentops-domain-evolution-bdd.md` | Count 78 → 79 |
| `PRODUCT.md`, `docs/ARCHITECTURE.md`, `docs/SKILLS.md` | Synced via
`scripts/sync-skill-counts.sh` |

**The registries-drift remediation arc (soc-zxia) is paying off** —
adding a new skill costs 5 inventory doc updates, ALL automated and
gate-checked. Pre-push gate caught and the operator (me) fixed each one
mechanically.

## Validation

- ✅ `bash skills/ship-loop/scripts/validate.sh`: 17/17 PASS
- ✅ `scripts/pre-push-gate.sh --fast`: passed (1 pre-existing
scenarios/trace warn, unrelated)
- ✅ `tests/docs/validate-doc-release.sh`: link validation PASS
(synthesis doc reference uses GitHub URL since PR #331 isn't merged yet)
- ✅ `scripts/check-registry-drift.sh`: PASS
- ✅ `scripts/generate-skill-domain-map.sh`: 79 skills / 5 BCs / 79
dispositions

## Discovered

2026-05-18 session, immediately after [PR
#331](https://github.com/boshu2/agentops/pull/331) (docs/learnings
synthesis). User asked: "shouldn't we turn this into a skill?" — yes.
This is the executable form.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Codex <codex@example.invalid>
2026-05-19 00:56:38 +00:00
Bo b3774cf139 refactor(council): brainstorm/debate/verdict mode taxonomy (soc-ml4l) (#293)
* docs(readme): lead with problem/solution and the executable-spec chain

* feat(skills): add expert-council — adversarial persona council

Named domain-expert personas duel via the dueling-idea-wizards route (verdict -> 0-1000 cross-scoring -> reveal -> score matrix). judgment tier. Slated for absorption into council --mode=debate per soc-ml4l.

* docs(council): add council-modes.feature acceptance spec for soc-ml4l

* refactor(council): formalize brainstorm/debate/verdict mode taxonomy

Refactor `council` into the three-mode taxonomy settled by the 2026-05-17
cross-vendor taxonomy duel (soc-ml4l). `--mode` selects one of exactly three
deliberation patterns — brainstorm (diverge), debate (contend), verdict
(converge); verdict is the default. `--focus`/`--depth`/`--runtime`/`--roster`
are orthogonal knobs, never modes.

- New `references/modes.md` — full taxonomy, mode-invariant lifecycle
  (convene/brief/deliberate/synthesize/record), knob aliases.
- Rename the `--debate` flag (a verdict intensifier) to `--adversarial`;
  the word `debate` now names the contend mode. `debate-protocol.md` ->
  `adversarial-protocol.md`.
- Absorb `expert-council` as `--mode=debate`: move `dueling-route.md` into
  `council/references/`; `expert-council` is now a 1-release thin alias ->
  `/council --mode=debate`.
- `research` verb folds into brainstrom (`--focus=research`); `validate`
  stays a verdict alias.
- Sync codex twins, SKILL-TIERS, using-agentops catalog, validate.sh
  behavioral checks, codex hashes.

Acceptance: every scenario in council/references/council-modes.feature holds.

---------

Co-authored-by: Codex <codex@example.invalid>
2026-05-17 19:33:07 -04:00
Boden Fuller 8c731aef64 fix(ci): make skill validate-contracts billboard-aware (clears 4 CI failures)
#275's billboard refactor thinned process-skill SKILL.md files and moved
detail into references/, but the validate contracts still grepped SKILL.md.

skill-lint + smoke-test: relax content-presence checks in crank/implement/
  post-mortem/swarm validate.sh to scan the skill as a unit (SKILL.md +
  references/); structural/identity checks stay SKILL.md-only. test-first-smoke
  updated to match relocated SPEC/TEST WAVE + Step 0/4 headings.
skill-lint line caps: trim flywheel 310 -> 286 (cap 300), using-agentops
  261 -> 239 (cap 250) by removing redundant prose, no content lost.
skill-integrity: link 3 orphaned references (crank/branch-isolation,
  validation/flags + release-readiness-gates).
codex parity: regenerate stale skills-codex source hashes (77 skills).

Local: run-all.sh PASS, heal.sh --strict clean, smoke-test PASS.
2026-05-15 16:30:32 -04:00
Boden Fuller 3e374d842d feat(product): codify AgentOps 3 launch path 2026-05-10 23:22:14 -04:00
Boden Fuller 302be5e16d feat(practice): pass-6 backfill — 10 more practices: declarations + sync-hooks
Adds practices: frontmatter to the remaining 10 missing skills under skills/
(pr-implement, pr-plan, pr-research, pr-retro, reverse-engineer-rpi, shared,
skill-auditor, skill-builder, system-tuning, using-agentops). After pass 6:
75 with practices / 679 missing. Zero skills under skills/ remain missing —
pass-7+ will broaden into non-skill primitives (hooks, evals, schemas,
scripts). Embedded using-agentops re-synced via make sync-hooks; codex
parity hashes regen'd.
2026-05-10 22:53:46 -04:00
Boden Fuller 81c2f3eca9 chore: sharpen go toolchain and hook skills 2026-05-09 22:42:27 -04:00
Bo d81f54bf47 feat(skills): skill-builder + skill-auditor pair (epic soc-9bak) (#237)
* feat(skills): add skill-builder/auditor foundation (I1, I2)

Wave 1 of soc-9bak (skill-builder + skill-auditor pair).

I1: skills/skill-builder/references/skill-template.md
- Canonical SKILL.md template extracted from anthropics/financial-services
  @ commit bb4a2b3e53cf27f8900b33ed6a2d95ed32e57f1d
- 15-check auditor checklist (7 wrap heal-skill Pass-1 + 8 NEW Pass-2)
- PRODUCT.md alignment mapping per design hardening
- Pre-mortem F1 applied: description-multiline -> description-has-triggers
  (3 valid forms: YAML | block, Triggers/Use-when markers, metadata.triggers array)

I2: schemas/{build,audit}-report.json
- Output contracts for both skills
- Audit report enum encodes the 8 NEW Pass-2 check ids (description-has-triggers,
  constraints-frontloaded, rationale-present, verification-checkpoints,
  output-spec-explicit, quality-rubric, references-modularization, trigger-clarity)

Refs: .agents/plans/2026-05-06-skill-builder-auditor-plan.md
      .agents/council/2026-05-06-pre-mortem-skill-builder-auditor.md (WARN, 5 amendments propagated)

* feat(skills): implement skill-builder + skill-auditor (I3, I4)

Wave 2 of soc-9bak.

I3 — skill-builder (159-line SKILL.md):
- Mode dispatcher (build.sh): from-scratch | from-template | absorb-external | from-pattern
- from-pattern carries explicit alpha/passthrough disclaimer (pre-mortem F2)
- Template materializer (init.sh): renders SKILL.md skeleton from references/skill-template.md
- Codex parity day-1: writes both skills-codex/<name>/SKILL.md AND prompt.md
- Auto-trims skill_api_version from codex SKILL.md (F5; converter is content-only)
- Post-build self-audit (build.sh tail invokes skill-auditor)

I4 — skill-auditor (158-line SKILL.md):
- Pass 1: wraps bash skills/heal-skill/scripts/heal.sh --check (delegation, not reimplementation)
- Pass 2: 8 NEW check_* functions
  1. check_description_has_triggers (3 valid forms — F1 fix)
  2. check_constraints_frontloaded
  3. check_rationale_present
  4. check_verification_checkpoints
  5. check_output_spec_explicit
  6. check_quality_rubric
  7. check_references_modularization (conditional, >400 lines)
  8. check_trigger_clarity
- Verdict: fails>0=FAIL, warns>0=WARN, else PASS
- JSON output conforms to schemas/audit-report.json
- Severity downgrade: description-has-triggers and trigger-clarity FAIL->WARN
  after running against existing AgentOps skills (real-but-cosmetic gap, not
  blocker) — documented in references/audit-checks.md

Validation:
- bash skills/skill-builder/scripts/validate.sh => PASS (159 lines)
- bash skills/skill-auditor/scripts/validate.sh => PASS (158 lines)
- audit on heal-skill -> WARN (not FAIL — F1 fix verified)
- audit on forge -> FAIL (correctly flags missing Output Specification section)
- audit on council -> WARN (not FAIL — F1 fix verified)

Refs: .agents/plans/2026-05-06-skill-builder-auditor-plan.md
      .agents/research/2026-05-06-financial-services-skill-template.md

* feat(skills): implement skill-builder + skill-auditor (I3, I4)

Wave 2 of soc-9bak.

I3 — skill-builder (159-line SKILL.md):
- Mode dispatcher (build.sh): from-scratch | from-template | absorb-external | from-pattern
- from-pattern carries explicit alpha/passthrough disclaimer (pre-mortem F2)
- Template materializer (init.sh): renders SKILL.md skeleton from references/skill-template.md
- Codex parity day-1: writes both skills-codex/<name>/SKILL.md AND prompt.md
- Auto-trims skill_api_version from codex SKILL.md (F5; converter is content-only)
- Post-build self-audit (build.sh tail invokes skill-auditor)

I4 — skill-auditor (158-line SKILL.md):
- Pass 1: wraps bash skills/heal-skill/scripts/heal.sh --check (delegation, not reimplementation)
- Pass 2: 8 NEW check_* functions (description-has-triggers (3 valid forms — F1 fix),
  constraints-frontloaded, rationale-present, verification-checkpoints,
  output-spec-explicit, quality-rubric, references-modularization, trigger-clarity)
- Verdict: fails>0=FAIL, warns>0=WARN, else PASS
- JSON output conforms to schemas/audit-report.json
- Severity downgrade applied uniformly across SKILL.md, audit.sh, audit-checks.md:
  description-has-triggers and trigger-clarity FAIL->WARN (real-but-cosmetic
  gaps observed on heal-skill/forge/council during pilot test)

Validation:
- bash skills/skill-builder/scripts/validate.sh => PASS (159 lines)
- bash skills/skill-auditor/scripts/validate.sh => PASS (158 lines)
- audit on heal-skill -> WARN
- audit on council -> WARN
- audit on forge -> FAIL (correctly flags missing Output Specification section)

Refs: .agents/plans/2026-05-06-skill-builder-auditor-plan.md
      .agents/research/2026-05-06-financial-services-skill-template.md

* feat(skills): wave 3 — codex parity, catalog wiring, integration tests (I5-I7)

I5: codex parity for skill-builder/skill-auditor (slim frontmatter, prompt.md, .agentops-generated.json)
I6: catalog entries in skills/using-agentops/SKILL.md + skills-codex/using-agentops/SKILL.md
I7: 26 bats integration tests (12 builder + 14 auditor) + known-good/known-bad fixtures

Bug fixes during validation:
- audit.sh constraints-frontloaded check: awk END{exit 1} overrode in-rule exit 0; fixed via found flag
- audit.sh summary printf: grep -c | head -1 (was '|| echo 0' producing two-line value)

Closes soc-9bak.5, soc-9bak.6, soc-9bak.7

* feat(skills): wave 5 — refactor discovery + validation toward unified template (I9)

Pilot refactor of 2 Tier-S skills per Tier-S audit recommendations
(.agents/audits/2026-05-06-tier-s-pilot.md):

- discovery: add ## Output Specification section listing 5 artifact paths
  (research, plan, council, latest+per-run execution packets). Verdict FAIL→WARN.
- validation: add ## Output Specification (compact one-line); move ## Troubleshooting
  to references/troubleshooting.md to stay under 248-line CI limit. Verdict FAIL→WARN.
- skills-codex/* mirrored. validation codex SKILL.md additionally moved
  ## Phase Summary Format to references/ to stay under budget.

Skipped (out of scope, see audit report):
- plan (description over budget already)
- crank (669 lines, full slim refactor needed)
- heal-skill (already WARN, no FAIL to fix)

26/26 bats integration tests still passing. Codex parity audit clean.

Closes soc-9bak.8 (pilot baseline already documented), soc-9bak.9

* feat(skills): wave 6 — closure for skill-builder/skill-auditor pair (I10)

Closure work:
- post-mortem written to .agents/post-mortems/2026-05-06-skill-builder-auditor-pilot.md
- skills/SKILL-TIERS.md: 2 new entries under Cross-Vendor & Meta
- sync-skill-counts.sh ran clean: counts updated in PRODUCT.md, README.md,
  docs/SKILLS.md, docs/ARCHITECTURE.md, using-agentops/SKILL.md
- docs/documentation-index.md: 3 new links (skill-builder, skill-auditor, pilot audit)
- skills/heal-skill/SKILL.md + skills-codex/heal-skill/SKILL.md: ## See Also section
  cross-linking to skill-builder + skill-auditor
- skills-codex parity: full catalog rows + manifest entries + .agentops-generated.json
  + references/ and scripts/ copied alongside SKILL.md (heal-skill convention)
- tests/skills/test-token-budgets.sh: bumped CODEX_DESC_TOTAL_FAIL_CHARS 2400 → 2500
  (avg ~33 chars per skill * 73 skills = 2409, with safety margin)

Pre-push gate (--fast): Pass 1 PASSED (29 skipped advisory checks).

Closes soc-9bak.10
Epic soc-9bak: complete (10/10 issues, 6/6 waves, 4 commits on crank/soc-9bak)

* fix(ci): unblock skill-builder/auditor PR CI checks

Pre-existing drift on main exposed by this PR (which touches skills/, triggering CI checks that earlier merges path-filtered around):

- evals/agentops-core/cli-command-surface-matrix.json: bump expected CLI surface from top=63 sub=155 all=218 → top=63 sub=156 all=219 (one subcommand added since last bump)
- evals/agentops-core/fixtures/cli-command-surface-smoke.sh: same bump
- .github/workflows/validate.yml: eval harness dry-run task name go-build → go-01 (harness no longer has go-build)
- registry.json: regenerated to reflect 73 skills, 41 hooks, 50 stores, 61 evals (was stale)
- tests/scripts/pre-push-gate.bats: add make_stub for scripts/test-evolve-cycle-smoke.sh (added by PR #241 but bats stub list wasn't updated)

All fixes verified locally. None affect skill-builder/skill-auditor work directly — they unblock CI to land that work.

* fix(ci): regenerate registry.json without local .agents/ pollution

CI runs in clean checkout where .agents/ is empty (gitignored). The previous registry.json was committed from a dev environment with populated .agents/, causing CI's regenerated registry to differ on file_count fields for knowledge stores.

Now committed registry has knowledge_stores=0 to match CI's clean-checkout view.

Verified: generate-registry.sh --check passes when .agents/ is empty.

Closes the registry-check failure on PR #237 CI.

* fix(ci): registry.json matches CI clean-checkout state (knowledge_stores=2)

CI's clean checkout has tracked .agents/nightly/ and .agents/rpi/ — these
must appear in registry.json or registry-check fails. The previous attempt
emptied them entirely. This restores the correct CI-equivalent state.

Verified locally with: rm -rf .agents && git checkout HEAD -- .agents/ &&
bash scripts/generate-registry.sh --check (now passes).
2026-05-06 17:08:29 -04:00
Boden Fuller a7a51f2c16 feat(standards): codify skill tier caps and codex registration 2026-05-03 23:00:11 -04:00
Boden Fuller bea8c26bbe fix(codex): sync codex twins for using-agentops + validation
The codex artifact metadata gate enforces source/codex twin commits as a
matched pair. The previous commits modified skills/using-agentops and
skills/validation without touching their twins.

- skills-codex/using-agentops/SKILL.md: add $system-tuning row in the
  Advanced Skills table (mirrors /system-tuning add in source)
- skills-codex/validation/SKILL.md: trim same two redundant sections as
  source (Expensive Command Policy and DAG preamble code block)
- skills-codex/.agentops-manifest.json + per-skill .agentops-generated.json
  hashes auto-refreshed by regen-codex-hashes.sh

Validation: codex parity PASS for both skills, heal-strict clean,
validate-codex-generated-artifacts (staged scope) PASS.
2026-05-03 18:56:23 -04:00
Boden Fuller 557e4af9ec feat(codex): cap skills-codex description catalog and add --repair-shape audit
Adds a 2400-char aggregate budget for skills-codex/*/SKILL.md `description:`
fields in tests/skills/test-token-budgets.sh, then trims each skill's description
to fit (catalog now 2146/2400). Both Claude and Codex SKILL.md descriptions
are kept in sync; codex .agentops-generated.json hashes regenerated.

Adds --repair-shape to scripts/audit-codex-hooks.sh: when ~/.codex/hooks.json
is missing or in legacy-flat shape, rewrites it from hooks/codex-hooks.json
with the active plugin_root (read from .agentops-codex-install.json) and
backs up any prior file. Covered by new test_repairs_legacy_flat_shape.

Memory decay (4 .agents/ files) bumped by the SessionStart inject hook.
2026-04-30 15:16:59 -04:00
Boden Fuller b567a21ff9 feat(cli): add ao agents doctor — combined inspect + lint + orphan report
Fourth subcommand under ao agents. Rolls up the existing inspect (#141)
and lint (#143) outputs and adds two new cross-surface checks:

  - "orphan skills"     — skills/<name>/ exists but no .agents/<name>/
  - "undocumented dirs" — .agents/<name>/ is neither catalogued nor a skill

Default exit policy mirrors lint: non-zero only when the lint script
fails. --strict also fails on any orphan or undocumented entry, suitable
for CI gates.

Reuses parseAgentsAllowlist + discoverActiveSkills from agents.go and
re-implements the lint exec path inline (so doctor can keep going past
a lint failure and still collect the cross-surface report). JSON output
via the AgentsDoctorReport shape.

9 tests cover registration, helper functions (sorted output, hidden-dir
skipping, missing-agents-dir tolerance), text/JSON shapes, and exit
codes (lint-failure pass-through, --strict orphan exit). COMMANDS.md
regenerated. using-agentops skills (Claude + Codex) updated to mention
the new subcommand; codex hashes regenerated; parity drift + audit
both pass.

Closes agentops-zw6.
2026-04-25 18:46:05 -04:00
Boden Fuller f9204a96d7 docs(skills): add ao agents inspect/lint to using-agentops catalogs
Per the /evolve constraint that any new user-facing CLI surface needs both
Claude and Codex skill mentions, surface 'ao agents inspect' and
'ao agents lint' (added in #141 + #143) under the Knowledge Flywheel
section of both skills/using-agentops/SKILL.md and skills-codex/using-agentops/SKILL.md.

Codex hashes regenerated. check-codex-parity-drift.sh and
audit-codex-parity.sh both pass.

Closes agentops-13z.
2026-04-25 18:46:05 -04:00
Boden Fuller 0496441989 Reduce skill catalog context footprint 2026-04-24 00:52:27 -04:00
Boden Fuller 4e00fcc312 fix(codex): default to skill chaining 2026-04-24 00:11:19 -04:00
Boden Fuller a1a58bfb28 docs(skills): add autodev contract skill 2026-04-11 21:57:03 -04:00
Boden Fuller 765d0891cb feat(skills): ship dream interactive surface 2026-04-10 09:04:21 -04:00
Boden Fuller 938c6cf41c chore: refresh codex artifact metadata 2026-04-09 17:02:32 -04:00
Boden Fuller 29b335e2e9 chore: trim using-agentops skill 2026-04-09 17:00:38 -04:00
Boden Fuller 6d80baf689 docs: align product framing across onboarding surfaces 2026-04-09 15:45:04 -04:00
Boden Fuller 3eb679c6f6 feat(knowledge): rename athena → compile + add Karpathy-style knowledge compiler
Rename the athena skill to compile — a descriptive name that communicates
what it actually does. Extend with Karpathy's LLM Knowledge Bases architecture:

- New compile phase: LLM reads raw .agents/ artifacts and produces interlinked
  markdown wiki at .agents/compiled/ with index.md, log.md, backlinks
- New lint phase: detects contradictions, orphan pages, stale claims, coverage gaps
- Pluggable compute backend via AGENTOPS_COMPILE_RUNTIME (ollama|claude|openai)
- Hash-based incremental compilation (only recompile changed sources)
- compile.sh engine with security fixes (no shell injection, path traversal guard)
- Full rename across 93 files: skills, docs, CLI, tests, hooks, scripts, codex

Existing Mine → Grow → Defrag cycle preserved as phases within the larger
compile workflow. No vector DB — compiled wiki IS the retrieval layer.
2026-04-05 17:57:40 -04:00
Boden Fuller 53bbd37024 feat(gc): make gc default executor, fix schema bugs, add L1-L3 tests
gc executor is now the default when gc binary (>= 0.13.0) and
city.toml are available. Falls back to stream executor otherwise.

Schema fixes found by L3 live controller tests:
- GCController uses running (bool), not state (string)
- gc event emit uses --payload flag, not --data

Test infrastructure: gcMock with TestHelperProcess pattern for
deterministic exec injection. 107 test cases across L1 (unit),
L2 (component chain), and L3 (live gc controller).

Skills updated to document gc as default runtime mode.
Crank failure taxonomy updated from tmux to gc session commands.
2026-04-04 20:05:29 -04:00
Boden Fuller f6b502909b fix: align rpi lifecycle contracts and packet retention 2026-04-03 17:26:56 -04:00
Boden Fuller 24b8d29738 fix: purge tracked .agents artifacts 2026-04-03 09:33:31 -04:00
Bo 69630a8de0 feat: add knowledge activation skill and CLI surfaces (#87)
* feat: add knowledge activation skill and CLI surfaces

* chore: sync embedded skills and codex artifact hashes

* test: cover quality signals hook in bats suite
2026-04-01 20:53:17 -04:00
Boden Fuller 98e581989c codex: retire stale artifact provenance metadata 2026-04-01 13:10:42 -04:00
Boden Fuller 539db10b42 fix(skills): address vibe findings — stale counts, header, delta table clarity
- Forge: "26 patterns" → "30 patterns" (W-1)
- Pre-mortem: "Top 5" → "Top 8" header (S-3)
- Flywheel diagnostics: δ table shows raw days, /100 only in formula (W-3)
2026-03-30 15:37:01 -04:00
Boden Fuller 0030790283 feat(skills): encode evidence-driven anti-patterns, unify flywheel metrics, add normalization defect detection
- Create global ~/.agents/MEMORY.md with 7 universal principles and top patterns
- Unify sigma/rho/delta definitions across skills/docs/code (code is truth)
- Add normalization defect scan to Athena defrag (placeholder, stacked frontmatter, bundled, dupes)
- Add anti-pattern pre-flight to /plan (dead infra, brainstorm-as-plan, 40% context, commit cadence)
- Expand pre-mortem from top-5 to top-8 FAIL patterns (dead infra activation, rollback maps, four-surface closure)
- Add 4 new forge uncaptured lesson categories (normalization defects, promotion pipeline, taxonomy, stale contradictions)
- Add normalization defect check to post-mortem four-surface closure
- Fix pre-existing broken link in flywheel-diagnostics.md (regex in code block)
- Sync all changes to skills-codex with Codex-specific adaptations preserved
2026-03-30 15:27:49 -04:00
Boden Fuller 3f6bb2bda4 chore(codex): sync Codex skills for 6 new lifecycle skills
Add Codex variants (SKILL.md, prompt.md, markers) for test, review,
refactor, deps, perf, and scaffold. Wire cross-references in 8 existing
Codex skill copies. Update catalog and manifest.
2026-03-27 19:39:12 -04:00
Boden Fuller ea5d1148bb feat: harden codex hookless follow-up flows 2026-03-24 10:09:27 -04:00
Boden Fuller 62b2b5b3a0 fix: narrow codex closeout ownership 2026-03-23 19:54:10 -04:00
Boden Fuller ebba51716d feat: wire codex lifecycle into codex skills 2026-03-23 19:21:36 -04:00
Boden Fuller c1b4807190 fix: align codex skill runtime docs 2026-03-23 15:40:26 -04:00
Boden Fuller 9e4ddcf859 feat: add codex hookless lifecycle fallback 2026-03-23 15:24:33 -04:00
Boden Fuller b5316baef7 fix: align codex skill bundle with runtime contract 2026-03-21 10:08:27 -04:00