mirror of
https://github.com/Heretek-AI/heretek-rigs.git
synced 2026-11-08 17:15:38 -10:00
Merge pull request #3 from Heretek-AI/remediate/audit-hr-6.1-5.5-regen
fix: remediate HR-6.1 + HR-5.5 via regen (64 skills, 15th tab deny)
This commit is contained in:
439 files changed
+5032
-409
No files matched your search
+65
-74
@@ -1,92 +1,81 @@
|
||||
# AUDIT_REPORT_FINDINGS: heretek-rigs
|
||||
|
||||
## Baseline
|
||||
- Commit: `9ec0014ff44e7e174f6d7a5c74590de5f8fe664f` (from `.git/refs/heads/main`; `git log` message/date NOT RUN — shell blocked)
|
||||
- Audit date (UTC): 2026-10-19 (user-supplied session date; `date -u` NOT RUN)
|
||||
- Commit: `99b4420c6a2e50749c8bb0b3a8d02186b9aa2b41` (from `.git/refs/heads/main`; `git log` message/date NOT RUN — shell blocked)
|
||||
- Previous run commit: `9ec0014ff44e7e174f6d7a5c74590de5f8fe664f` (prior report); tree moved, re-audited from scratch
|
||||
- Audit date (UTC): 2026-10-20 (session date; `date -u` NOT RUN — shell blocked)
|
||||
- Tool versions: UNKNOWN — shell blocked (`permission.rejected` on every shell call for controller and all subagents; python3/node/npm/git/jq/rg/rig/pi/docker versions not runnable)
|
||||
- Dirty files: UNKNOWN (`git status --porcelain` not runnable); no worktree copy made (worktree creation needs shell)
|
||||
- Scratch space: NOT CREATED (`mktemp`/worktree blocked); subagent raw notes are in-session only (no `$AUDIT_TMP/{alpha,beta,gamma}.md` files)
|
||||
- Host capabilities: file-content (read-only) audit only via Read/Glob/Grep + 3 subagents (Alpha/Beta/Gamma) + 3 cross-examiners; every live check (rig/pi/docker/network/python/jsonschema/digest recompute/sabotage/bootstrap/render-seat/guard-profiles/compose) NOT RUN
|
||||
- Host capabilities: file-content (read-only) audit only via Read/Glob/Grep + 3 subagents (Alpha/Beta/Gamma) + 3 cross-examiners; every live check (`rig spec validate` / `bundle check` / `agent validate` / `preflight` / `expand` / `add` / daemon up-down, `pi` seat render, `find -type l`, `jsonschema` validation, JCS/`configurationId`/`packageDigest` recompute, `render-seat.py` refusal matrix, `seed-rig.py` / `bootstrap-pi-seats.sh` in isolated `OPENRIG_HOME`, `make guard-profiles` matrix, `docker compose config`, all 12 sabotage runs, `generate-rigs.py --check-idempotent`, `verify-rigs.sh --check-only`, `audit_loop.py --self-test`, network/registry probes) NOT RUN
|
||||
- Per section 0.5 + Cardinal Rule: no claim is VERIFIED without execution (ceiling is PARTIAL for static-consistent)
|
||||
- Formation executed: Alpha (claims [A]), Beta (claims [B]), Gamma (claims [G]) ran concurrently with no cross-reading; cross-examination (Alpha's→Beta, Beta's→Gamma, Gamma's→Alpha) completed; all challenges returned CONFIRMED (one refinement: Alpha's patch-bypass "REMEDIATED" holds for toolchain only, not checked-in artifacts — see HR-5.5-patch)
|
||||
- Formation executed: Alpha (claims [A]) + Beta (claims [B]) + Gamma (claims [G]) ran concurrently with no cross-reading; cross-examination (Alpha's→Beta-challenger, Beta's→Gamma-challenger, Gamma's→Alpha-challenger) completed; synthesis by controller with on-disk re-reads of `schemas/rigspec-keys.pinned.json:12`, `scripts/render-seat.py:398-419`, `specs/agents/languages/go-backend-eng/runtime/policy-enforcement.json:60-63`, `specs/agents/_shared/skills/executing-plans/SKILL.md:50`, `fleet/fleet.yaml:3361-3367`
|
||||
|
||||
## Verdict
|
||||
heretek-rigs at HEAD `9ec0014` is the 51-role / 8-rig OpenRig monorepo described in the prompt, and its static shapes (fleet partition 6+11+4+6+11+6+7, schema keys/versions, permission first/last bounds, sidecar pins, exact-set networks, model/runtime pins) are internally consistent on disk. Three defects stand on static evidence, each re-verified from scratch and cross-examined (all CONFIRMED): the upstream tarball attestation is still a placeholder forcing the verify gate red on a clean tree (HR-2.1, P1, Claim 8.2 BROKEN), the `subagent-driven-development` sibling skill is still absent with dangling fleet bindings and unconditional hard script refs (HR-6.1, P2, Claim 6.1 BROKEN), and allowed `git log/show/diff` prefixes still admit patch output past `path` read-denies in every checked-in artifact even though the renderer+gate+gate-role toolchain fix has landed unmaterialized (HR-5.5-patch, P3). The prior HR-5.5 rendered-allow-superset gap is FIXED in gate (`verify-rigs.sh:577-584` subset checks; live injection UNVERIFIABLE). No live proof was possible (rig/pi/docker/python/network all blocked). The single most important fix is to attest the real `@openrig/[email protected]` tarball SHA-256 into `schemas/rigspec-keys.pinned.json:12` and run `python3 scripts/generate-rigs.py` on a networked shell host (HR-2.1 + HR-5.5-patch regen), which unblocks the green gate, the audit-loop self-test, and any reachable `STATUS: NO_FINDINGS`.
|
||||
heretek-rigs at HEAD `99b4420` remains the 51-role / 8-rig OpenRig monorepo described in the prompt, and its static shapes (fleet partition 6+11+4+6+11+6+7, schema keys/versions, permission first/last bounds, sidecar pins, exact-set networks, model/runtime pins) are internally consistent on disk. The two prior-report P3 residuals are STILL OPEN on static re-verification and cross-examination could not overturn them: the `../using-superpowers/references/` prose pointer still dangles with a staged-but-unregenerated fleet binding (HR-6.1), and the `"*\t-p*"` tab deny lives in the renderer + verifier but in zero of the checked-in permission artifacts, so the tree is stale relative to its own fail-closed gate (HR-5.5). No new P0/P1/P2 was proven; a proposed new P1 for each leg was refuted/downgraded by challengers to the same two P3s (duplicate + fail-closed-gate-already-red reasoning). No live proof was possible (rig/pi/docker/python/network all blocked). The single most important fix is to run `python3 scripts/generate-rigs.py` on a networked shell host (materializing both the tab deny and the using-superpowers sibling), then re-run the section-4 live recipes plus the 12 sabotage targets with upstream attestation (tarball bytes, skill tree hashes, matcher semantics), which is the only path to `STATUS: NO_FINDINGS`.
|
||||
|
||||
## Prioritized Defect Matrix
|
||||
| ID | Priority | Claim | Location | Summary |
|
||||
|----|----------|-------|----------|---------|
|
||||
| HR-2.1-pinned-still-local | P1 | 2.1 / 8.2 | `schemas/rigspec-keys.pinned.json:12` + `scripts/verify-rigs.sh:183-186` | `tarball_sha256` placeholder forces gate-red on clean tree |
|
||||
| HR-6.1-missing-subagent-sibling | P2 | 6.1 | `specs/agents/_shared/skills/` (absent dir) + `fleet/fleet.yaml:2860,3359` | sibling absent; dangling seat bindings; hard script refs dangle, Native path intact |
|
||||
| HR-5.5-git-patch-read-bypass | P3 | 5.3 / 5.5 | `specs/agents/security/threat-modeler/runtime/pi-permission-config.json:15-38` (allows `:24-27`, no patch denies) vs `scripts/render-seat.py:398-414` + `scripts/verify-rigs.sh:556-567` (toolchain fixed, artifacts stale) | `git log/show/diff` prefixes admit `-p` patch output past `fleet/*`+`scripts/*` read-denies on disk |
|
||||
| HR-6.1-using-superpowers-prose-ref | P3 | 6.1 | `specs/agents/_shared/skills/executing-plans/SKILL.md:50` + `fleet/fleet.yaml:3366-3367` | dangling `../using-superpowers/references/` prose ref; staged fleet binding without lock/disk/regen; doc-dangles while fail-closed gate now red |
|
||||
| HR-5.5-tab-p-suffix-gap | P3 | 5.5 / 5.3 | `specs/agents/languages/go-backend-eng/runtime/policy-enforcement.json:60-63` + `scripts/render-seat.py:402-419` + `scripts/verify-rigs.sh:587-603` + `scripts/gate-role.sh:69-76` | `"*\t-p*"` in renderer+verifier but 0/102 artifacts carry it (14 vs 15 denies); tab-separated `-p` un-denied on disk; stale tree fails own gate |
|
||||
|
||||
## Findings
|
||||
### HR-2.1-pinned-still-local: upstream tarball attestation still placeholder, gate red on clean tree
|
||||
- **Priority:** P1
|
||||
- **Claim:** 2.1 (rig validation chain attested to upstream) + 8.2 (`verify-rigs.sh --check-only` exits 0 clean)
|
||||
- **Location:** `schemas/rigspec-keys.pinned.json:12`; gate `scripts/verify-rigs.sh:183-186`; generator `scripts/generate-rigs.py:384-403` (per Alpha re-read); tgz `schemas/openrig-cli-0.6.11.tgz` absent
|
||||
- **Proof:** read-only (shell blocked). `pinned.json:10-14` shows `"tarball_sha256": "PENDING_SHELL_HOST_REFRESH", "refreshed_at": null` (controller re-read this run); gate requires `re.fullmatch(r"[0-9a-f]{64}", ...)` else `fail()`; live `./scripts/verify-rigs.sh --check-only; echo $?` NOT RUN (predicted 1). No env/placeholder allowance or skip branch on this path (`CI`/`HERETEK_ALLOW_SYNTHETIC` govern a different SYNTHETIC check)
|
||||
- **Raw output:** `"tarball_sha256": "PENDING_SHELL_HOST_REFRESH",` (verbatim file content); gate: `fail("schemas/rigspec-keys.pinned.json provenance.upstream_tarball.tarball_sha256 must be the 64-hex SHA-256 of the upstream tarball ...")`
|
||||
- **Why it matters:** every clean-tree verify exits 1, so Claim 8.2 is false, `audit_loop.py --self-test` fails at its gate step, and the loop can never reach `STATUS: NO_FINDINGS`.
|
||||
- **Remediation:** on a networked shell host from repo root: `npm pack @openrig/[email protected] && sha256sum openrig-cli-0.6.11.tgz`, record the 64-hex digest at `pinned.json` `provenance.upstream_tarball.tarball_sha256` (+ `refreshed_at`), optionally place tarball at `schemas/openrig-cli-0.6.11.tgz`, then `python3 scripts/generate-rigs.py`.
|
||||
- **Verify the fix:** `./scripts/verify-rigs.sh --check-only; echo $?` -> 0; `python3 scripts/audit_loop.py --self-test; echo $?` -> 0
|
||||
- **Cross-examination:** Beta challenged (re-read pin + gate 183-192 + tgz glob; checked placeholder allowance/env bypass/skip branch — all negative); CONFIRMED, P1 stands (fail-closed, documented "red by design" -> not P0; breaks top-level clean invariant -> not P2).
|
||||
|
||||
### HR-6.1-missing-subagent-sibling: vendored subagent-driven-development sibling absent, bindings dangling
|
||||
- **Priority:** P2
|
||||
- **Claim:** 6.1 — 63 skills full-fidelity incl. multi-file `subagent-driven-development` sibling required by `writing-plans`/`executing-plans` REQUIRED SUB-SKILL refs
|
||||
- **Location:** `specs/agents/_shared/skills/` (62 dirs, no `subagent*` — Beta re-listed this run); `fleet/skills-lock.json` (62 entries, `grep subagent` -> No matches); `specs/agents/_shared/agent.yaml:5-129` (62 `resources.skills`); refs `specs/agents/_shared/skills/writing-plans/SKILL.md:59,200-204`, `specs/agents/_shared/skills/executing-plans/SKILL.md:53,60,121,126,236` (+ scripts `executing-plans/scripts/task-start:12,21`, `task-done:10,21` `sdd="$(cd .../../../subagent-driven-development/scripts ...)"` under `set -euo pipefail`); bindings `fleet/fleet.yaml:2860-2861` (product-director), `:3359-3360` (system-architect); verifier expects 63 at `scripts/verify-rigs.sh:251` + sibling gate `:314-356`
|
||||
- **Proof:** read-only: skills-dir read returns 62 entries; `glob skills/subagent-driven-development/*` -> No files found; `grep subagent skills-lock.json` -> No matches; live `ls|wc -l` + lock-vs-disk reconcile NOT RUN. Nearest candidate `dispatching-parallel-agents/` contains zero `subagent-driven-development|sdd-workspace|task-brief` refs (no alias/proxy)
|
||||
- **Raw output:** 62 dirs (`address-sanitizer/` ... `yara-rule-authoring/`); `task-start:21`: `sdd="$(cd "$(dirname "$0")/../../subagent-driven-development/scripts" && pwd)"`; `executing-plans/SKILL.md:126`: `` `../subagent-driven-development/scripts/sdd-workspace PLAN_FILE` ``; `:236`: `../subagent-driven-development/scripts/review-package`
|
||||
- **Why it matters:** two seats bind a skill id with no backing directory/lock entry, and three unconditional procedural script paths (`sdd-workspace` at skill start, `review-package` at final review, `task-start`/`task-done` sdd resolution under `set -euo pipefail` with no `||` guard → immediate exit on missing dir) resolve against a nonexistent dir; plan/execute flow degrades where it touches those scripts. Verifier count+sibling gates go red by design.
|
||||
- **Remediation:** vendor `obra/superpowers@bb92a77` `skills/subagent-driven-development/` (multi-file incl. `scripts/` + LICENSE) under `specs/agents/_shared/skills/subagent-driven-development/`, add `skills-lock.json` entry + `_shared/agent.yaml` `resources.skills` binding, re-run `python3 scripts/generate-rigs.py`.
|
||||
- **Verify the fix:** `ls specs/agents/_shared/skills | wc -l` (=63); lock-vs-disk reconcile; `./scripts/verify-rigs.sh --check-only` -> 0
|
||||
- **Cross-examination:** Gamma challenged (re-read all REQUIRE sites + both scripts + fleet bindings + `verify-rigs.sh:251,314-356`; corrected two non-existent paths cited by Beta — substance unchanged); CONFIRMED. DOWNGRADE P1->P2 SUSTAINED: `writing-plans:59` is disjunctive ("Use SDD (recommended) or executing-plans"), `:200-204` gates SDD-requirement on user choosing the subagent-driven path, and `executing-plans:49-51` documents a working no-subagent Native fallback — seats function via the Native path, so P1/seat-outage refuted. P3 refuted in turn (dangling refs + missing sibling + unconditional script failures exceed cosmetic).
|
||||
|
||||
### HR-5.5-git-patch-read-bypass: allowed git log/show/diff prefixes admit patch output past path read-denies (artifacts stale, toolchain fixed)
|
||||
### HR-6.1-using-superpowers-prose-ref: dangling using-superpowers prose reference + staged-but-unregenerated binding
|
||||
- **Priority:** P3
|
||||
- **Claim:** 5.3 / 5.5 (secret/sensitive read-denies vs. role-scoped git allows)
|
||||
- **Location:** `specs/agents/security/threat-modeler/runtime/pi-permission-config.json:24-27` (allows) vs `:57-58` (denies), bash `:28-37` ends at `"*)*"` with zero patch denies (controller re-read this run; identical in `policy-enforcement.json:30-44`, `exec-director`, `sabotage-qa-tester`); fleet grants `fleet/fleet.yaml:590-593` (+ ~19 roles identical); gate `scripts/verify-rigs.sh:547-567`; renderer `scripts/render-seat.py:387-414`; probes `scripts/gate-role.sh:32-40,69-73`; generator `scripts/generate-rigs.py:629-644`
|
||||
- **Proof:** read-only. Every checked-in locked seat allows `"git log --oneline*"`, `"git show --stat*"`, `"git diff --stat*"`, `"git diff --name-only*"` (trailing `*` admits flag suffixes). `git log --oneline -p -- fleet/fleet.yaml` matches `"git log --oneline*"`; `-p` matches none of the 10 on-disk terminal denies — while `fleet/*` is `"deny"` in `path`. Toolchain half HAS landed since the prior run: `render-seat.py:398-414` emits `"* -p*","*--patch*","*--full-diff*","*--textconv*"` LAST; `verify-rigs.sh:556-567` mandates all 14 terminal denies + ordering; `gate-role.sh:69-70` probes both patch exfils must-deny (+ `:72` anti-over-block must-allow); `generate-rigs.py:629-644` renders via `build_seat_files` so regen materializes the fix. Consequence: checked-in specs are STALE — clean-tree `--check-only` now fails on missing terminal denies (second red cause alongside HR-2.1).
|
||||
- **Raw output:** `threat-modeler:24-27` allow prefixes; `path` denies `fleet/*` (`:57`), `scripts/*` (`:58`); on-disk bash ends `"*)*": "deny"` (`:37`); renderer loop `:398-414` + gate tuple `:558` both contain the 4 patch denies
|
||||
- **Why it matters:** punctures the `fleet/*` + `scripts/*` read-deny layer for locked seats on disk (orchestrator-config disclosure; charter/recon surface). Blast radius capped at tracked content — secrets live untracked in `$HERETEK_SECRETS` (4.3/4.4), and `*.env`/`*id_rsa*` direct-read denies still hold — hence P3, not higher.
|
||||
- **Remediation (fail-closed):** run `python3 scripts/generate-rigs.py` on a shell host (NOT a hand-edit — materializes renderer patch denies into all 51 specs), then `./scripts/verify-rigs.sh --check-only` + `bash scripts/gate-role.sh threat-modeler` (patch probes must deny, anti-over-block must allow).
|
||||
- **Verify the fix:** `bash scripts/gate-role.sh threat-modeler` with patch probes → both deny; full `./scripts/verify-rigs.sh --check-only` stays green (needs HR-2.1 attestation too)
|
||||
- **Cross-examination:** Alpha challenged (re-read `:540-584`, renderer, gate-role canary+probes, all artifact maps, fleet grants, generator); CONFIRMED — STILL OPEN on disk (not FIXED), same ID kept (identical bypass family, residual documented in gate comments), P3 sustained (tracked-only; upgrade to P2 would need secret-bearing tracked content — not in evidence). Alpha's competing "REMEDIATED" verdict REFUTED as fleet-state claim (holds for renderer+gate code only).
|
||||
- **Claim:** 6.1 (63/64 vendored skills full-fidelity; every skill ref resolves)
|
||||
- **Location:** `specs/agents/_shared/skills/executing-plans/SKILL.md:50`; `fleet/fleet.yaml:3366-3367`
|
||||
- **Proof:** read-only (shell blocked). `grep using-superpowers specs/agents/_shared/skills/executing-plans/SKILL.md` → line 50 `` `../using-superpowers/references/`). Never fabricate a dispatch; run ``; `glob specs/agents/_shared/skills/using-superpowers*` → No files found; `grep using-superpowers fleet/skills-lock.json` → zero hits; `grep using-superpowers fleet/fleet.yaml` → lines 3361-3362 (comments) + 3366 (`- id: using-superpowers`, live list content under `system-architect` `skills.shared`); `specs/agents/_shared/agent.yaml` + all `rigs/*/agents/_shared/agent.yaml` → 63 ids each, zero `using-superpowers`; live `verify-rigs.sh --check-only` NOT RUN
|
||||
- **Raw output:** `` `../using-superpowers/references/`). Never fabricate a dispatch; run `` (line 50, verbatim); `fleet.yaml:3366-3367` verbatim: ` - id: using-superpowers` / ` source: superpowers`; gate `verify-rigs.sh:357-385` is an explicit HR-6.1 fail-closed gate (fence-strip + `../([a-z0-9-]+)/` match, `fail()` at :385) citing exactly this case
|
||||
- **Why it matters:** a reader/seat following the executing-plans doc hits a nonexistent sibling path; fleet (declared source of truth) now promises 64 shared ids while lock/disk/generated bindings deliver 63, so source and tree disagree until regen.
|
||||
- **Remediation:** on a networked shell host vendor `obra/superpowers@bb92a77:skills/using-superpowers/` (+ lock entry; `_shared/agent.yaml` binding follows from `generate-rigs.py:552-605` union), then `python3 scripts/generate-rigs.py` (expect `system-architect/agent.yaml` `uses.skills` + lock + disk to gain the 64th entry); do not hand-edit generated leaves
|
||||
- **Verify the fix:** `grep -rn "using-superpowers" specs/agents/_shared/skills/ fleet/` resolves to existing dirs/lock entries; `./scripts/verify-rigs.sh --check-only` → 0
|
||||
- **Cross-examination:** Gamma-challenger (vs Beta) CONFIRMED the dangle (prose not fenced: fences are the ```dot graph :68-106 and example :325-373; :50 survives `re.sub` fence-strip) and disk/lock absence, but corrected the narrative: the sibling gate is now fail-closed (suite red by inspection, not silent green) and the fleet binding is live YAML not comment-only; Beta's proposed separate P1 `HR-6.1-using-superpowers-dangling-binding` DOWNGRADED to this same P3 regen-lag (fleet 64 vs disk 63 is arithmetically real but already caught by `uses.skills` exact-equality gate :444-455 + doc-ref gate :371-385; upstream `using-superpowers` exists in `obra/superpowers@bb92a77`, so remediation is actionable) — folded here, no new ID.
|
||||
|
||||
### HR-5.5-tab-p-suffix-gap: tab-separated -p deny in renderer+verifier but absent from all checked-in artifacts (stale generated tree)
|
||||
- **Priority:** P3
|
||||
- **Claim:** 5.5 (bash terminal denies fail-closed) / 5.3 (read-deny layer)
|
||||
- **Location:** `specs/agents/languages/go-backend-eng/runtime/policy-enforcement.json:60-63` (representative of all 102 files); `scripts/render-seat.py:402-419`; `scripts/verify-rigs.sh:587-603`; `scripts/gate-role.sh:69-76`
|
||||
- **Proof:** read-only. Sampled bash maps show 14 denies (`"* -p*": "deny",` immediately followed by `"*--patch*": "deny",`); `grep -rn $'\t' specs/agents --include='*.json'` pattern → zero TAB denies (controller + Gamma re-read; `grep t-p` hits only `asset-pipeline` strings); `render-seat.py:413-414` verbatim `"* -p*",` / `"*\t-p*",` (15-tuple :402-418); `verify-rigs.sh:587-590` requires all 15 incl `"*\t-p*"` with terminality check :597-603; `generate-rigs.py:629-644` calls `build_seat_files` + order-preserving `write_json` (:195-197, no `sort_keys`), so regen would emit it; live matcher probes + `verify-rigs.sh --check-only` NOT RUN
|
||||
- **Raw output:** `"* -p*": "deny",` then `"*--patch*": "deny",` (no `"*\t-p*"` line between; `go-backend-eng` :60-61 verbatim) vs renderer `scripts/render-seat.py:414` ` "*\t-p*",` and verifier `scripts/verify-rigs.sh:587` `_TERMINAL_BASH_DENIES = (..., "* -p*", "*\t-p*", "*--patch*", ...)`
|
||||
- **Why it matters:** under the repo's own last-match-wins substring-glob model, `git log --oneline<TAB>-p -- fleet/fleet.yaml` matches the `git log --oneline*` allow but no deny (tab ≠ space), leaking tracked-content diffs past the `fleet/*` read-deny; secrets live untracked (`$HERETEK_SECRETS`, `*.env`/`*id_rsa*` direct-read denies hold), so blast radius is tracked content only, hence P3.
|
||||
- **Remediation:** on a networked shell host: `python3 scripts/generate-rigs.py` (emits the TAB deny into all 102 permission files via the already-fixed renderer; expect only those files changed) then `./scripts/verify-rigs.sh --check-only` → 0 and `bash scripts/gate-role.sh threat-modeler` → tab/`-p`/`--patch`/`--full-diff`/`--textconv` all deny with path-scoped allows still allow; optionally tighten gate to assert no allow follows the terminal block (already present :597-603) and keep TAB probe :74
|
||||
- **Verify the fix:** repo-wide TAB-deny present in all 102 files; `./scripts/verify-rigs.sh --check-only` exits 0
|
||||
- **Cross-examination:** Alpha-challenger (vs Gamma) CONFIRMED all three legs (renderer emits TAB :413-414 with correct `json.dumps` `\t`→TAB chain; verifier requires it under `<<'PY'` heredoc; 14-vs-15 on disk; no covering TAB deny; `generate-rigs.py` regen would fix; prior legs 2/4-probe and sortedness-vs-terminality already fixed in script :69-76/:597-603) but REFUTED P1: duplicate of this same P3 ID (not a new finding), no execution per Cardinal Rule (matcher whitespace normalization untested; `verify-rigs.sh` red-run and hostile corpus NOT RUN), impact capped at tracked content — folded here as stale-regen fact, no new P1 (`HR-5.5-tab-deny-not-materialized` rejected as duplicate).
|
||||
|
||||
## Claim Ledger
|
||||
| Claim | Status | Evidence (command or finding ID) |
|
||||
|-------|--------|----------------------------------|
|
||||
| 1.1 | PARTIAL | static: 51 `member_fragments` + 51 role keys + 51 `specs/agents/*/*/agent.yaml` (incl 37/51); Heretek-Crew diff NOT RUN |
|
||||
| 1.2 | PARTIAL | static: 6+11+4+6+11+6+7=51, spot exactly-one-rig; full cross-product NOT RUN |
|
||||
| 1.1 | PARTIAL | static: 51 role keys + 51 `specs/agents/*/*/agent.yaml` (incl 37/51); Heretek-Crew diff NOT RUN |
|
||||
| 1.2 | PARTIAL | static: 6+11+4+6+11+6+7=51 member-ID counts, spot exclusivity; full uniqueness matrix NOT RUN |
|
||||
| 1.3 | PARTIAL | static: 3-seat command pod + 15 pods + 51 members + rig.all-51.yaml + roster; `rig expand` NOT RUN |
|
||||
| 1.4 | PARTIAL | static: 7-file shape, zero stubs (sweeps noted), `local:../../_shared`->`local:../_shared` sole delta (spot-diffed); full byte-drift diff NOT RUN |
|
||||
| 2.1 | PARTIAL | static keys/version pass; live `rig spec validate` NOT RUN; attestation placeholder -> HR-2.1 (8.2) |
|
||||
| 2.2 | PARTIAL | static edge kinds/qualification sampled, no cycles in checked subgraph (zero `spawned_by` edges used — legal); programmatic DAG NOT RUN |
|
||||
| 2.3 | PARTIAL | static: 51x `send_text`, zero `guidance_merge`/`hooks:` in agent.yaml (include-scoped grep), lifecycle pins; `rig agent validate` NOT RUN |
|
||||
| 2.4 | PARTIAL | static zero `guidance_merge` in specs+rigs agent.yaml (`behaviour.json` `guidance_merge` values are generator-emitted culture/told-files delivery, `generate-rigs.py:1058`, not startup files); live preflight/bundle NOT RUN |
|
||||
| 2.5 | PARTIAL | static `copytree symlinks=False` + `is_symlink` sweep + `..`/absolute gates present; `find -type l` + `rig bundle check` NOT RUN |
|
||||
| 3.1 | PARTIAL | static: 8+8+8+1 present, required-fields/consts shape OK; Draft202012Validator NOT RUN |
|
||||
| 3.2 | PARTIAL | static: 64-hex digest present, pattern-conformant; JCS recompute NOT RUN |
|
||||
| 3.3 | PARTIAL | static: joined-string IDs sorted (qa sample), triple-agreeing digests; disk recompute + `identity-vectors.json` replay NOT RUN |
|
||||
| 4.1 | PARTIAL | static model/runtime pins on all sampled seats + member/pod fragments + agent defaults, all-omp presets; seat census + preflight NOT RUN |
|
||||
| 4.2 | PARTIAL | static renderer logic (0600, `!cat`, O_NOFOLLOW, uid pin, strict default, `--pod`/phantom fail-closed); live render/bootstrap NOT RUN |
|
||||
| 4.3 | PARTIAL | static `!cat`/echo-Bearer shapes in key/env/headers only (samples), refusal logic present; live refusal matrix NOT RUN |
|
||||
| 4.4 | PARTIAL | static: zero `env:` in rig.yaml, only `permission_policy` lines match secret-name grep; full-repo literal scan NOT RUN |
|
||||
| 5.1 | PARTIAL | static: 18x `builtin:locked` + rig defaults, 16x docs/sbom-only, zero yolo/open in shipped surface; live NOT RUN (subset-gap now FIXED in gate, live injection UNVERIFIABLE) |
|
||||
| 5.2 | PARTIAL | static: `*` first / `*..*` last in both maps on samples; hostile corpus NOT RUN (note: checked-in bash maps lack the 4 patch denies the gate now mandates -> regen pending, see HR-5.5-patch) |
|
||||
| 5.3 | PARTIAL | static: secret-denies + deny/timeout present, zero `ask`; live probes NOT RUN; patch-bypass -> HR-5.5-git-patch-read-bypass (P3 STILL OPEN, stale artifacts) |
|
||||
| 5.4 | PARTIAL | static: 3 mut-denies on all samples, read-only AST/LSP allows, no pi-lsp@0.1.7 in shipped surface; live bypass probe NOT RUN |
|
||||
| 5.5 | PARTIAL | static: bash/mcp bounds + 10 on-disk terminal denies ordered on samples (gate+renderer now mandate 14 incl. patch flags — artifacts stale); escape corpus NOT RUN; -> HR-5.5-git-patch-read-bypass (P3) |
|
||||
| 6.1 | BROKEN | HR-6.1-missing-subagent-sibling |
|
||||
| 6.2 | PARTIAL | static pins exact, zero r2mcp/aws-mcp/:latest in catalog (`replaces:` notes only), read-only flags; liveness NOT RUN |
|
||||
| 7.1 | PARTIAL | static 8x 127.0.0.1 + 9 pinned images, zero 0.0.0.0/bare in shipped surface; compose/bind check NOT RUN |
|
||||
| 1.4 | PARTIAL | static: 7-file shape sampled, zero stubs in sampled dirs, `local:../../_shared`→`local:../_shared` sole delta in sampled pair; full byte-drift diff NOT RUN |
|
||||
| 2.1 | PARTIAL | static keys/version + 64-hex attestation shape FIXED; live `rig spec validate` + tarball-byte attestation NOT RUN |
|
||||
| 2.2 | PARTIAL | static edge kinds/qualification sampled, DFS gate present; programmatic full-DAG NOT RUN |
|
||||
| 2.3 | PARTIAL | static: 51x `send_text`, zero `guidance_merge`/`hooks:` in agent.yaml; `rig agent validate` NOT RUN |
|
||||
| 2.4 | PARTIAL | static zero `guidance_merge` in specs+rigs agent.yaml; live preflight/bundle NOT RUN |
|
||||
| 2.5 | PARTIAL | static `copytree symlinks=False` + `is_symlink` sweep + `..`/absolute gates; `find -type l` + `rig bundle check` NOT RUN |
|
||||
| 3.1 | UNVERIFIABLE | presence/shape static only; Draft202012Validator NOT RUN (shell blocked) |
|
||||
| 3.2 | UNVERIFIABLE | 64-hex shape only; JCS recompute NOT RUN |
|
||||
| 3.3 | UNVERIFIABLE | joined-string/digest shapes + identity-vectors constants static; disk recompute + replay NOT RUN |
|
||||
| 4.1 | PARTIAL | static model/runtime pins sampled + all-omp presets; seat census + preflight NOT RUN |
|
||||
| 4.2 | PARTIAL | static renderer logic (0600, `!cat`, O_NOFOLLOW, uid pin, strict default); live render/bootstrap NOT RUN |
|
||||
| 4.3 | PARTIAL | static `!cat`/echo-Bearer shapes in key/env/headers only, refusal logic present; live refusal matrix NOT RUN |
|
||||
| 4.4 | PARTIAL | static: zero `env:` in rigs rig.yaml, only prose/placeholder secret-name hits; full literal scan NOT RUN |
|
||||
| 5.1 | PARTIAL | static: 16x readonly_charter + sampled `builtin:locked`, zero yolo/open in shipped surface; full 18-seat census + live NOT RUN |
|
||||
| 5.2 | PARTIAL | static: `*` first / `*..*` last in both maps on samples; hostile corpus NOT RUN |
|
||||
| 5.3 | PARTIAL | static: secret-denies + deny/timeout present, zero `ask`; live probes NOT RUN; tab residual → HR-5.5-tab-p-suffix-gap (P3) |
|
||||
| 5.4 | PARTIAL | static: 102/102 mut-denies, read-only AST/LSP allows, no pi-lsp@0.1.7 in shipped surface; live bypass probe NOT RUN |
|
||||
| 5.5 | PARTIAL | static: bash/mcp bounds present but 14/15 terminal denies on disk (stale regen); escape corpus NOT RUN; → HR-5.5-tab-p-suffix-gap (P3) |
|
||||
| 6.1 | PARTIAL | static: 63 lock entries + 63 skills + multi-file SDD + 6 SOP skills; upstream fidelity UNVERIFIABLE; → HR-6.1-using-superpowers-prose-ref (P3) |
|
||||
| 6.2 | PARTIAL | static pins exact, zero r2mcp/aws-mcp/:latest in catalog, read-only flags, liveness labels; registry existence NOT RUN |
|
||||
| 7.1 | PARTIAL | static 8x 127.0.0.1 + 9 pinned images, zero 0.0.0.0/bare; compose/bind check NOT RUN |
|
||||
| 7.2 | PARTIAL | static 20-toggle exact set `"0"` + 0.5.0 + :ro; proxy probe NOT RUN |
|
||||
| 7.3 | PARTIAL | static exact-set networks + ro mounts + guard logic; live matrix NOT RUN |
|
||||
| 8.1 | UNVERIFIABLE | idempotence NOT RUN (shell blocked); static sorted()/--check-idempotent features noted |
|
||||
| 8.2 | BROKEN | HR-2.1 placeholder forces exit 1 on clean tree (plus stale patch-deny artifacts second red cause) |
|
||||
| 8.3 | UNVERIFIABLE | self-test NOT RUN; static evaluator logic reads fail-closed (7 vectors) |
|
||||
| 8.4 | PARTIAL | all 8 deliverables present non-empty; full placeholder sweep NOT RUN (adjacent: `LICENSE.md:1` is literally `PLACEHOLDER` — out of claim scope, noted for human) |
|
||||
| 8.1 | UNVERIFIABLE | idempotence NOT RUN (shell blocked); static `--check-idempotent` + sorted()/hash features noted |
|
||||
| 8.2 | UNVERIFIABLE | live exit NOT RUN; clean-tree currently red by inspection (tab-deny + using-superpowers gates); gate-shape passes statically otherwise |
|
||||
| 8.3 | UNVERIFIABLE | self-test NOT RUN; static evaluator reads fail-closed (7 vectors) |
|
||||
| 8.4 | PARTIAL | all 8 deliverables present non-empty; full placeholder sweep NOT RUN |
|
||||
|
||||
## Sabotage Results
|
||||
| Invariant | One-line sabotage (file:line, before -> after) | Suite result | Caught? |
|
||||
@@ -97,7 +86,7 @@ heretek-rigs at HEAD `9ec0014` is the 51-role / 8-rig OpenRig monorepo described
|
||||
| 2.4 guidance_merge | `send_text` -> `guidance_merge` (exec-director agent.yaml) | NOT RUN | UNVERIFIABLE (static: specs+vendored guidance_merge gates) |
|
||||
| 2.5 symlink | clean -> `agents/link.md` symlink | NOT RUN | UNVERIFIABLE (static: is_symlink sweep) |
|
||||
| 3.2 bodyDigest flip | `registry/status.json` digest -> flipped hex char | NOT RUN | UNVERIFIABLE (static: digest-equality gate) |
|
||||
| 4.3 sk-live | `runtime/mcp.json` `!cat /...` -> `sk-live-123456` | NOT RUN | UNVERIFIABLE (static: literal-secret regex gate, `!`-in-args die) |
|
||||
| 4.3 sk-live | `runtime/mcp.json` `!cat /...` -> `sk-live-123456` | NOT RUN | UNVERIFIABLE (static: literal-secret regex gate) |
|
||||
| 5.1 yolo | `builtin:locked` -> `builtin:yolo` | NOT RUN | UNVERIFIABLE (static: policy gates, LOCKED_18_ROLES) |
|
||||
| 5.2 remove *..* | `policy-enforcement.json` `*..*:deny` -> removed | NOT RUN | UNVERIFIABLE (static: bounds/order gates) |
|
||||
| 5.4 code_rewrite allow | `code_rewrite:deny` -> `allow` | NOT RUN | UNVERIFIABLE (static: mut-deny gate) |
|
||||
@@ -107,17 +96,19 @@ heretek-rigs at HEAD `9ec0014` is the 51-role / 8-rig OpenRig monorepo described
|
||||
## Regression Ledger
|
||||
| Previous finding ID | Previous priority | Status now: FIXED / STILL OPEN / REGRESSED / NO LONGER APPLICABLE | Evidence |
|
||||
|-----|-------------------|--------|----------|
|
||||
| HR-2.1-pinned-still-local | P1 | STILL OPEN | `pinned.json:12` placeholder + gate `verify-rigs.sh:183-186` unchanged (controller + Alpha + Beta-challenger all re-read this run) |
|
||||
| HR-6.1-missing-subagent-sibling | P2 (downgraded from P1 on prior cross-exam) | STILL OPEN (P2 sustained: absence confirmed, REQUIRED shown disjunctive, hard script refs unconditional) | 62 skill dirs, no `subagent*`; lock grep no match; dangling bindings `fleet.yaml:2860-2861,3359-3360`; disjunctive REQUIRE `writing-plans:59,200-204` + fallback `executing-plans:49-51`; unconditional refs + `task-start/task-done:21` (Beta + Gamma-challenger re-verified) |
|
||||
| HR-7.3-network-exclusivity-gap | P2 (fixed) | FIXED retained | static exclusive exact-set networks + ro mounts + guard retained (`docker-compose.sidecars.yml`, `Makefile:46-54`); live matrix NOT RUN |
|
||||
| HR-5.5-rendered-allow-superset-gap | P2 (new on prior run) | FIXED (in gate; live injection UNVERIFIABLE) | `verify-rigs.sh:568-584` now asserts rendered bash/path_write allows ⊆ fleet-declared sets (surplus fails); `:530-539` mcp bound-set + `:481` rendered↔rendered equality; Alpha + Gamma + both challengers CONFIRMED |
|
||||
| HR-5.5-git-patch-read-bypass | P3 (new on prior run) | STILL OPEN (toolchain landed, artifacts stale; P3 sustained) | on-disk bash maps still end `"*)*"` with zero patch denies (`threat-modeler:15-38` controller re-read); renderer `render-seat.py:398-414` + gate `:556-567` + probes `gate-role.sh:32-40,69-73` landed but unmaterialized — regen pending (Gamma + Alpha-challenger CONFIRMED) |
|
||||
| HR-6.1-using-superpowers-prose-ref | P3 | STILL OPEN (evolved: fleet binding staged, regen pending; fail-closed gate now present) | `executing-plans/SKILL.md:50` verbatim retained; zero `using-superpowers*` dirs; zero lock hits; `fleet.yaml:3366` live binding without regen; Beta + Gamma-challenger CONFIRMED |
|
||||
| HR-5.5-tab-p-suffix-gap | P3 | STILL OPEN (morphed to stale-regen; scripts fully remediated, artifacts stale) | on-disk 14/102 denies vs renderer+verifier 15 (`render-seat.py:414`, `verify-rigs.sh:587`); `go-backend-eng:60-61` verbatim; Gamma + Alpha-challenger CONFIRMED fact, P1 duplicate REFUTED |
|
||||
| HR-2.1-pinned-still-local | P1 | FIXED (shape; hash-byte truth UNVERIFIABLE) | `pinned.json:12` 64-hex `289dc007…267f6` + `refreshed_at`; Alpha + Beta + challengers CONFIRMED shape; byte-truth needs `npm pack && sha256sum` on shell host |
|
||||
| HR-6.1-missing-subagent-sibling | P2 | FIXED retained (counts/bindings/scripts; upstream fidelity UNVERIFIABLE) | `subagent-driven-development/` multi-file + lock + fleet bindings; challengers CONFIRMED |
|
||||
| HR-7.3-network-exclusivity-gap | P2 (fixed prior) | FIXED retained | static exact-set networks + ro mounts + guard retained; live matrix NOT RUN |
|
||||
| HR-5.5-rendered-allow-superset-gap | P2 (fixed prior) | FIXED retained | subset gates present; live injection UNVERIFIABLE |
|
||||
| HR-5.5-git-patch-read-bypass | P3 | FIXED (artifacts materialized as 14 denies; residual split to HR-5.5-tab-p-suffix-gap) | 14 patch/terminal denies on disk; 3 challengers CONFIRMED on-disk fix; tab residual → HR-5.5-tab-p-suffix-gap |
|
||||
|
||||
## Not Audited / Unverifiable
|
||||
- All live checks NOT RUN (shell `permission.rejected` on controller + all subagents): `rig spec validate` / `bundle check` / `agent validate` / `preflight` / `expand` / `add` / daemon up-down; `pi` seat render; `find -type l`; `jsonschema` validation; JCS/`configurationId`/`packageDigest` recomputes; `render-seat.py` refusal matrix; `seed-rig.py` / `bootstrap-pi-seats.sh` in isolated `OPENRIG_HOME`; `make guard-profiles` matrix; `docker compose config`; all 12 sabotage runs; `generate-rigs.py --check-idempotent`; `verify-rigs.sh --check-only`; `audit_loop.py --self-test`.
|
||||
- No `$AUDIT_TMP` scratch/worktree created or cleaned (blocked); real-checkout dirtiness unverified via shell — human must confirm `git status --porcelain` shows only this report (+ prompt file if untracked). Commit read from `.git/refs/heads/main` (`9ec0014`); commit message/date not re-read (no shell).
|
||||
- No `$AUDIT_TMP` scratch/worktree created or cleaned (blocked); real-checkout dirtiness unverified via shell — human must confirm `git status --porcelain` shows only this report (+ prompt file if untracked). Commit read from `.git/refs/heads/main` (`99b4420`); commit message/date not re-read (no shell).
|
||||
- Coverage: all 30 claim IDs have a ledger status (Alpha 10 + Beta 10 + Gamma 10; ceiling PARTIAL without execution). Finding IDs stable (`HR-<claim-id>-<slug>`) for next-run matching.
|
||||
- Human must provide: networked shell host with `@openrig/[email protected]`, pi 1.3.0, loopback daemon, then re-run section-4 recipes, the 12 sabotage targets, the superset-injection probe, and the `gate-role.sh threat-modeler` patch probes; first actions are the HR-2.1 tarball attestation + `python3 scripts/generate-rigs.py` regen (materializes patch denies + any skill vendoring).
|
||||
- Human must provide: networked shell host with `@openrig/[email protected]`, pi 1.3.0, loopback daemon, then run section-4 recipes, the 12 sabotage targets, `python3 scripts/generate-rigs.py` regen (tab deny + using-superpowers), the tab-suffix + `--full-diff`/`--textconv` probes, the upstream `using-superpowers` check, and the `npm pack @openrig/[email protected]` + `obra/superpowers@bb92a77` tree-hash attestations.
|
||||
|
||||
## Final Loop Sentinel
|
||||
STATUS: FINDINGS_DETECTED
|
||||
@@ -76,13 +76,13 @@ graph TD
|
||||
- Verify zero `guidance_merge` entries exist in any `agent.yaml` (`startup.files`), preventing the shared `<cwd>/AGENTS.md` overwrite bug, and confirm all 6 OpenRig core SOP skills (`openrig-operating-model`, `mission-slice-sop`, `delegating-work`, `queue-handoff`, `refocusing`, `seat-continuity-and-handover`) are projected via `resources.skills`.
|
||||
|
||||
### Subagent Beta: Architecture, 51-Role Parity, Cryptographic Digests & Supply Chain Auditor
|
||||
* **Focus**: "Are all 51 roles from `Heretek-Crew` and 63 vendored skills 100% accounted for without truncation, do all v1 JSON Schemas validate, do cryptographic digests match disk, do the canonicalization rules replay the `identity-vectors.json` shape fixtures, and are all package/image pins real?"
|
||||
* **Focus**: "Are all 51 roles from `Heretek-Crew` and 64 vendored skills 100% accounted for without truncation, do all v1 JSON Schemas validate, do cryptographic digests match disk, do the canonicalization rules replay the `identity-vectors.json` shape fixtures, and are all package/image pins real?"
|
||||
* **Methodology**:
|
||||
- Cross-check `fleet/fleet.yaml`, `specs/agents/<domain>/<role-slug>/`, and Rigs 1–7 (`rigs/*/rig.yaml`) against all 51 roles in `Heretek-Crew` (specifically verifying Role 37 `static-analysis-lead` in Rig 6 and Role 51 `ai-red-teamer` in Rig 7, with partition counts 6 + 11 + 4 + 6 + 11 + 6 + 7 = 51).
|
||||
- Verify zero byte-drift between `specs/agents/<domain>/<role-slug>/{guidance,startup,runtime}` and every materialized `rigs/<rig-slug>/agents/<role-slug>/` copy, and verify `python3 scripts/generate-rigs.py` is 100% deterministic (`git status --porcelain` empty after re-run).
|
||||
- Validate all 8 `rigs/*/configurations.yaml`, 8 `registry/views/*/behaviour.json`, 8 `registry/entries/*.yaml`, and `registry/status.json` against `schemas/*.v1.schema.json` using `jsonschema.Draft202012Validator`.
|
||||
- Recompute `configurationId` (UTF-16 code-unit sort over `pod.member=runtime`), `packageDigest` (`openrig.package-digest/v1` over `JSON.stringify(path) + "\t" + sha256 + "\n"` sorted by UTF-16 code units), and `registry/status.json` `bodyDigest` (SHA-256 over RFC 8785 JCS canonical JSON) and prove they match the repository's files byte-for-byte; replay the `identity-vectors.json` shape fixtures (UTF-16 order, JCS canonical form, coverage/algorithm constants) separately — that file pins canonicalization rules, not per-rig digests.
|
||||
- Verify all 63 vendored skills in `specs/agents/_shared/skills/<id>/` against `fleet/skills-lock.json` (`obra/superpowers@bb92a77` full-fidelity directories (including upstream single-file skills where upstream is single-file, and the multi-file `subagent-driven-development` sibling required by the `writing-plans`/`executing-plans` REQUIRED SUB-SKILL refs), `trailofbits/skills@5c99c03` unmodified CC-BY-SA-4.0 with LICENSE, `getsentry/skills@f57ada2`, `anthropics/skills@dbd4588`, `vercel-labs/agent-skills@063bee9`, `@openrig/[email protected]`), and confirm every pin in `fleet/mcp-servers.yaml` and `fleet/fleet.yaml` exists (zero `r2mcp==0.2.5`, zero `aws-mcp`, zero duplicate `[email protected]`, zero `pi-subagents`).
|
||||
- Verify all 64 vendored skills in `specs/agents/_shared/skills/<id>/` against `fleet/skills-lock.json` (`obra/superpowers@bb92a77` full-fidelity directories (including upstream single-file skills where upstream is single-file, the multi-file `subagent-driven-development` sibling required by the `writing-plans`/`executing-plans` REQUIRED SUB-SKILL refs, and the `using-superpowers` sibling required by the `executing-plans` `../using-superpowers/references/` per-platform pointer), `trailofbits/skills@5c99c03` unmodified CC-BY-SA-4.0 with LICENSE, `getsentry/skills@f57ada2`, `anthropics/skills@dbd4588`, `vercel-labs/agent-skills@063bee9`, `@openrig/[email protected]`), and confirm every pin in `fleet/mcp-servers.yaml` and `fleet/fleet.yaml` exists (zero `r2mcp==0.2.5`, zero `aws-mcp`, zero duplicate `[email protected]`, zero `pi-subagents`).
|
||||
|
||||
### Subagent Gamma: Security, Permission Bypass, Extension Tool Containment & Sidecar Isolation Auditor
|
||||
* **Focus**: "Can any seat bypass `path_write` via `..` traversal or mutating AST/LSP extension tools (`code_rewrite`, `lsp_rename`, `lsp_code_actions`), can any read-only seat mutate code, can secrets leak, or are sidecars exposed?"
|
||||
@@ -130,10 +130,10 @@ graph TD
|
||||
* **Claim 5.2 [G][S]**: Every seat's `extensions/pi-permission-system/config.json` starts `path_write` with `"*": "deny"`, explicitly denies `AGENTS.md`, `*/AGENTS.md`, `.git/*`, `*/.git/*`, `.pi/*`, `*/.pi/*`, `.agents/*`, `*/.agents/*`, `fleet/*`, `scripts/*`, and places `"*..*": "deny"` as the **last** key in both `path_write` and `path` so `..` traversal attempts are always denied.
|
||||
* **Claim 5.3 [G][S]**: Every seat's `extensions/pi-permission-system/config.json` denies secret reads (`*.env`, `*.env.*` except `*.env.example`, `*.pem`, `*.key`, `*id_rsa*`, `*kubeconfig*`, `*/secrets/*`, `*.pat`, `*.uri`, `*.profile`, `*.region`, `*.host`, `*.password`, `*.credentials`, `*.config`, `*.url`, `*.user`), sets `external_directory: "deny"` and `promptTimeoutMs: 60000`, and contains zero `"ask"` rules.
|
||||
* **Claim 5.4 [G][S]**: Every seat's `extensions/pi-permission-system/config.json` explicitly sets mutating AST/LSP extension tools (`"code_rewrite": "deny"`, `"lsp_rename": "deny"`, `"lsp_code_actions": "deny"`) to `"deny"` so `ToolKind = "extension"` tools from `[email protected]` cannot bypass `path_write`, while the 21 code-analysis/builder seats allow only read-only AST/LSP tools (`ast_grep`, `ast_search`, `code_overview`, `lsp_diagnostics`, `lsp_hover`, `lsp_definition`, `lsp_references`, `lsp_symbols`, `lsp_completions`) and never load the duplicate `[email protected]` package.
|
||||
* **Claim 5.5 [G][S]**: Every seat's `bash` map starts with `"*": "deny"` followed only by role-scoped allow patterns (with zero `git diff/log/show --output=*` write escapes or arbitrary interpreters on locked seats) and ends with the terminal denies `"*--output*"`, `"*;*"`, `"*|*"`, `"*>*"`, `"*<*"`, `"*&*"`, `"*`*", `"*$*"`, `"*(*"`, `"*)*"`, `"* -p*"`, `"*--patch*"`, `"*--full-diff*"`, `"*--textconv*"` (last-match-wins, so chained/redirection/patch-output suffixes deny even on allowed prefixes). Every seat's rendered `bash`/`path_write` allow-sets are subsets of the fleet-declared `bash_allow`/`path_write` sets (a hand-injected allow in a generated permission file fails the gate), and `mcp` starts with `"*": "deny"` followed only by `<server>: "allow"` for servers bound to that role.
|
||||
* **Claim 5.5 [G][S]**: Every seat's `bash` map starts with `"*": "deny"` followed only by role-scoped allow patterns (with zero `git diff/log/show --output=*` write escapes or arbitrary interpreters on locked seats) and ends with the terminal denies `"*--output*"`, `"*;*"`, `"*|*"`, `"*>*"`, `"*<*"`, `"*&*"`, `"*`*", `"*$*"`, `"*(*"`, `"*)*"`, `"* -p*"`, `"*\t-p*"`, `"*--patch*"`, `"*--full-diff*"`, `"*--textconv*"` (last-match-wins, so chained/redirection/patch-output suffixes deny even on allowed prefixes, with no allow key following the terminal-deny block). Every seat's rendered `bash`/`path_write` allow-sets are subsets of the fleet-declared `bash_allow`/`path_write` sets (a hand-injected allow in a generated permission file fails the gate), and `mcp` starts with `"*": "deny"` followed only by `<server>: "allow"` for servers bound to that role.
|
||||
|
||||
### Domain 6: 63 Vendored Skills & Curated MCP Catalog
|
||||
* **Claim 6.1 [B][S]**: `specs/agents/_shared/agent.yaml` (and `rigs/*/agents/_shared/agent.yaml`) vendors all 63 shared skills under `specs/agents/_shared/skills/<id>/` with valid `SKILL.md` frontmatter and `LICENSE`, matching `fleet/skills-lock.json`, including all 6 OpenRig core SOP skills (`openrig-operating-model`, `mission-slice-sop`, `delegating-work`, `queue-handoff`, `refocusing`, `seat-continuity-and-handover`) under `resources.skills` and full-fidelity `obra/superpowers@bb92a77` skill directories (including upstream single-file skills where upstream is single-file, and the multi-file `subagent-driven-development` sibling required by the `writing-plans`/`executing-plans` REQUIRED SUB-SKILL refs).
|
||||
### Domain 6: 64 Vendored Skills & Curated MCP Catalog
|
||||
* **Claim 6.1 [B][S]**: `specs/agents/_shared/agent.yaml` (and `rigs/*/agents/_shared/agent.yaml`) vendors all 64 shared skills under `specs/agents/_shared/skills/<id>/` with valid `SKILL.md` frontmatter and `LICENSE`, matching `fleet/skills-lock.json`, including all 6 OpenRig core SOP skills (`openrig-operating-model`, `mission-slice-sop`, `delegating-work`, `queue-handoff`, `refocusing`, `seat-continuity-and-handover`) under `resources.skills` and full-fidelity `obra/superpowers@bb92a77` skill directories (including upstream single-file skills where upstream is single-file, the multi-file `subagent-driven-development` sibling required by the `writing-plans`/`executing-plans` REQUIRED SUB-SKILL refs, and the `using-superpowers` sibling required by the `executing-plans` `../using-superpowers/references/` per-platform pointer; every `../<id>/` doc ref outside fenced code blocks resolves to a vendored sibling directory).
|
||||
* **Claim 6.2 [B][S]**: Every MCP server in `fleet/mcp-servers.yaml` is pinned to an exact package version in the catalog (including `radareorg/[email protected]` with `-R` and `awslabs.aws-api-mcp-server==1.5.6` with `READ_OPERATIONS_ONLY=true`, and zero `r2mcp==0.2.5`, `aws-mcp`, or `:latest` tags), with per-seat `runtime/mcp.json` resolving pins at seed time; liveness exceptions honestly labeled in-catalog (`semgrep: run-failed-here`, `radare2: not-run`) are not silent pins, and read-only modes/flags are enforced (`--read-only`, `--access-mode=restricted`, `CLICKHOUSE_ALLOW_WRITE_ACCESS=false`).
|
||||
|
||||
### Domain 7: Sidecar Docker Compose & Network Segmentation
|
||||
|
||||
@@ -9685,3 +9685,421 @@ replaced with literals, no secrets/`OPENRIG_*` in `rig.yaml` `env:`, no proxy
|
||||
`AUDIT_REPORT_FINDINGS.md` left untouched; `scripts/audit_loop.py` must spawn
|
||||
the next triad audit (expect `STATUS: NO_FINDINGS` on re-audit: all three HR
|
||||
IDs remediated and gate green).
|
||||
|
||||
## 2026-10-20 — Automated remediation pass (PROMPT_FLEET_AUDIT_REMEDIATION.md, HR-6.1-using-superpowers-prose-ref + HR-5.5-tab-p-suffix-gap)
|
||||
|
||||
Execution context: OpenCode file-tool-only run. Reading order followed:
|
||||
`AUDIT_REPORT_FINDINGS.md` → `docs/OPENRIG_MUSE_GO_ARCHITECTURE.md` →
|
||||
`PROMPT_SPOONFEEDER_OPENCODE_IMPLEMENTATION.md` (M0–M4 excerpts, toolchain
|
||||
files authoritative) → `fleet/fleet.yaml` + `fleet/mcp-servers.yaml` +
|
||||
`scripts/generate-rigs.py` + `scripts/render-seat.py` +
|
||||
`scripts/verify-rigs.sh` + `scripts/gate-role.sh` + `tests/test_render_seat.py`
|
||||
+ `identity-vectors.json` + `PROMPT_ADVERSARIAL_FLEET_AUDIT.md`.
|
||||
`default.shell` probes (`python3 ./scripts/generate-rigs.py`, then `true`)
|
||||
each returned
|
||||
`{"type":"permission.rejected","message":"This non-interactive run cannot ask the user for permission..."}`
|
||||
(2 attempts, 0 blind retries; stop per hard rule 4 well before 3). Therefore
|
||||
`python3 scripts/generate-rigs.py`, `./scripts/verify-rigs.sh --check-only`,
|
||||
`./scripts/bootstrap-pi-seats.sh --all --dry-run`, and
|
||||
`python3 ./scripts/audit_loop.py --self-test` could NOT be executed here, and
|
||||
the regen that materializes the two fixes below (64th skill + 15th terminal
|
||||
deny across all 51 seats + refreshed digests) is PENDING on a shell host. No
|
||||
`STATUS: NO_FINDINGS` claimed here; `scripts/audit_loop.py` must spawn the
|
||||
next triad audit after the gate turns green. Every finding re-verified by
|
||||
`Read`/`Grep` per the Cardinal Rule. `AUDIT_REPORT_FINDINGS.md` untouched.
|
||||
|
||||
### Reproduction (Proof commands re-run via file tools)
|
||||
|
||||
- HR-6.1: `Read specs/agents/_shared/skills/executing-plans/SKILL.md:47-51`
|
||||
→ line 50 `` `../using-superpowers/references/` `` verbatim;
|
||||
`Read specs/agents/_shared/skills/` → 63 entries, no `using-superpowers*`;
|
||||
`Grep using-superpowers fleet/` → zero lock hits (only the 1
|
||||
`specs/.../SKILL.md:50` prose hit repo-wide); `Read
|
||||
.scratch/vendor/obra_superpowers/skills/` → 15 entries INCLUDING
|
||||
`using-superpowers/` (with `references/` holding `pi-tools.md` et al),
|
||||
confirming the ref is a valid upstream sibling omitted from the vendored
|
||||
subset. Gate blind spot CONFIRMED: `verify-rigs.sh:337-356` checks only
|
||||
`REQUIRED ... superpowers:<id>` refs and `\.\./([a-z0-9-]+)/scripts/`
|
||||
paths — a `../<id>/references/` prose ref escapes both. REPRODUCED.
|
||||
- HR-5.5: `Read specs/agents/security/threat-modeler/runtime/pi-permission-config.json:28-41`
|
||||
(sampled shape; full 51-seat re-read NOT RUN — shell blocked) +
|
||||
`Read render-seat.py:398-414` terminal tuple ending `* -p*` (space-anchored)
|
||||
+ `Read verify-rigs.sh:558-567` sortedness-only order gate +
|
||||
`Read gate-role.sh:69-70` only `-p`/`--patch` probes. Tab bypass, 2/4-flag
|
||||
probe gap, and order-gate weakness all CONFIRMED on disk. REPRODUCED.
|
||||
|
||||
### P3 — HR-6.1-using-superpowers-prose-ref (FIXED in source; regen pending)
|
||||
|
||||
- Root cause: `executing-plans` is vendored full-fidelity from
|
||||
`obra/superpowers@bb92a77`, whose upstream tree contains the
|
||||
`using-superpowers/` sibling (with the per-platform `references/`,
|
||||
including `pi-tools.md` relevant to our Pi runtime). The fleet's shared
|
||||
bindings never pulled that sibling into the vendored subset (63 skills),
|
||||
so the upstream prose pointer at SKILL.md:50 dangles and the gate's two
|
||||
patterns both miss the `../<id>/references/` shape.
|
||||
- Files modified (canonical catalog + generator-side gate, never the
|
||||
generated leaf — hard rule 1):
|
||||
- `fleet/fleet.yaml` (system-architect `shared:`): added
|
||||
`- id: using-superpowers / source: superpowers` with an
|
||||
`HR-6.1-using-superpowers-prose-ref` comment. System-architect is the
|
||||
only role binding `executing-plans`; the generator unions it into the
|
||||
shared pool, so the next regen vendors 64 skills, extends
|
||||
`fleet/skills-lock.json` (new tree-hash entry), `_shared/agent.yaml`
|
||||
`resources.skills`, and system-architect `uses.skills`. No
|
||||
`builtin:locked` touched, no upstream file edited (fidelity preserved).
|
||||
- `scripts/verify-rigs.sh`: count gate `63 → 64` (lock + disk +
|
||||
header comment); new fail-closed sibling-doc-ref block scans every
|
||||
`specs/agents/_shared/skills/*/SKILL.md`, strips fenced code blocks
|
||||
(so `typescript-astro` ```astro code samples with
|
||||
`'../components/...'` never false-positive), and fails on any
|
||||
`../([a-z0-9-]+)/` ref with no vendored sibling directory. Verified by
|
||||
reading that all other current SKILL.md-root `../` refs resolve
|
||||
(`subagent-driven-development` → `requesting-code-review`,
|
||||
`executing-plans` → `subagent-driven-development`,
|
||||
`requesting-code-review`) or are fenced.
|
||||
- `scripts/generate-rigs.py` docstring: `63 → 64` shared skills.
|
||||
- `PROMPT_ADVERSARIAL_FLEET_AUDIT.md` (§Beta focus, §Beta methodology,
|
||||
Domain 6 header + Claim 6.1): `63 → 64`, with the `using-superpowers`
|
||||
sibling named as required by the `executing-plans`
|
||||
`../using-superpowers/references/` pointer plus the every-`../<id>/`-resolves
|
||||
invariant.
|
||||
- Verification (TO RUN on shell host):
|
||||
`HERETEK_RIGS_ALLOW_DIRTY=1 python3 scripts/generate-rigs.py`
|
||||
(expect `... 64 shared skills ...`);
|
||||
`ls specs/agents/_shared/skills | wc -l` → 64;
|
||||
`grep -rn "using-superpowers" specs/agents/_shared/skills/ fleet/` →
|
||||
lock entry + vendored dir + fleet binding;
|
||||
`./scripts/verify-rigs.sh --check-only` → exit 0;
|
||||
sabotage (scratch copy: `rm -rf specs/agents/_shared/skills/using-superpowers`)
|
||||
→ gate exits 1 via the new sibling-doc-ref block (hard-rule-2 style
|
||||
proof). Could NOT execute here (`permission.rejected`).
|
||||
- Status: HARDENED in source; REGEN + EXECUTION PENDING shell.
|
||||
|
||||
### P3 — HR-5.5-tab-p-suffix-gap (FIXED in source; regen + live-pi proof pending)
|
||||
|
||||
- Root cause: three legs, all confirmed on disk: (1) the patch-deny
|
||||
`"* -p*"` anchors on a literal space, so
|
||||
`git log --oneline<TAB>-p -- fleet/fleet.yaml` matches the
|
||||
`git log --oneline*` allow but no deny under last-match-wins
|
||||
substring-glob semantics (`--patch`/`--full-diff`/`--textconv` denies
|
||||
need no space anchor and already cover tab separators); (2)
|
||||
`gate-role.sh` probes only 2/4 patch flags (`-p`, `--patch`);
|
||||
(3) `verify-rigs.sh` asserts terminal denies are sorted relative to
|
||||
each other, not that no `allow` follows them.
|
||||
- Files modified:
|
||||
- `scripts/render-seat.py`: added `"*\t-p*"` to the terminal-deny
|
||||
tuple (after `"* -p*"`) + comment documenting the tab gap (JSON
|
||||
`\t` decodes to TAB at match time). Fleet allows verified
|
||||
metachar-free, so the clean fleet renders unchanged except the added
|
||||
deny; all 51 seats gain a 15th terminal deny on regen.
|
||||
- `scripts/verify-rigs.sh`: `_TERMINAL_BASH_DENIES` gains `"*\t-p*"`;
|
||||
order gate gains a terminality assert (`max(allow_idx) >
|
||||
min(term_idx)` → fail: no allow may follow the terminal-deny block,
|
||||
a hand-injected trailing allow flips the gate); renderer-emit check
|
||||
gains `'"*\t-p*"'`.
|
||||
- `scripts/gate-role.sh`: added tab-separated
|
||||
`git log --oneline\t-p` deny probe (JSON `\t` → TAB) plus the two
|
||||
missing flag probes (`git log --oneline --full-diff`,
|
||||
`git show --textconv HEAD`) — 4/4 patch flags now live-probed.
|
||||
- `tests/test_render_seat.py`: expected terminal denies gain
|
||||
`"*\t-p*"`.
|
||||
- `PROMPT_ADVERSARIAL_FLEET_AUDIT.md` Claim 5.5: terminal-deny list
|
||||
gains `"*\t-p*"` + the no-allow-follows-the-block invariant.
|
||||
- Verification (TO RUN on shell host):
|
||||
`python3 scripts/generate-rigs.py` then
|
||||
`bash scripts/gate-role.sh threat-modeler` → tab `-p`,
|
||||
`--full-diff`, `--textconv` probes all `ok ... deny`, anti-overblock
|
||||
allows (`git log --oneline -- fleet/fleet.yaml` modulo the documented
|
||||
`fleet/*` path-deny over-block, `git status --short`) still allow;
|
||||
`./scripts/verify-rigs.sh --check-only` → exit 0;
|
||||
sabotage trio in a scratch copy (delete `"*\t-p*"` from one seat's
|
||||
`pi-permission-config.json`; append a trailing `"zzz-evil*": "allow"`
|
||||
after the terminal block; drop the tab probe expectation) → each flips
|
||||
the gate 0→1. Live matcher semantics (`\t` glob support in
|
||||
`@gotgenes/[email protected]`) decided by the hostile-corpus
|
||||
run through installed `pi`. Could NOT execute here.
|
||||
- Status: HARDENED in source; REGEN + LIVE PROOF PENDING shell/pi.
|
||||
|
||||
### Sabotage coverage note (remediation hard rule 2)
|
||||
|
||||
This audit's Sabotage Results table reports every invariant as UNVERIFIABLE
|
||||
(shell blocked, subjects present but live runs blocked) — none as survived
|
||||
(`Caught? = No`) — so no rule-2 reactive check was triggered. Proactively,
|
||||
this pass adds fail-closed gate coverage for both findings' exact gaps:
|
||||
the `../<id>/`-doc-ref sibling gate (HR-6.1) and the tab-deny + 4/4-probe +
|
||||
terminality gate (HR-5.5). Scratch-copy sabotage proofs for both are
|
||||
specified above and MUST be run on a shell host (delete-vendored-sibling →
|
||||
exit 1; delete-tab-deny / trailing-allow → exit 1).
|
||||
|
||||
### Verification gate (all BLOCKED here — exact commands + verbatim outputs)
|
||||
|
||||
```bash
|
||||
python3 scripts/generate-rigs.py
|
||||
# -> NOT RUN: {"type":"permission.rejected","message":"This non-interactive run cannot ask the user for permission, so the request was rejected. Continue without this action."}
|
||||
./scripts/verify-rigs.sh --check-only
|
||||
# -> NOT RUN: same permission.rejected (gate never probed beyond the generate attempt + `true` probe; 0 blind retries per hard rule 4)
|
||||
./scripts/bootstrap-pi-seats.sh --all --dry-run
|
||||
# -> NOT RUN: same permission.rejected (not retried — same error class)
|
||||
python3 ./scripts/audit_loop.py --self-test
|
||||
# -> NOT RUN: same permission.rejected (not retried — same error class)
|
||||
python3 scripts/generate-rigs.py # second run idempotency
|
||||
# -> NOT RUN: same permission.rejected
|
||||
```
|
||||
|
||||
Deterministic idempotency (`git diff` after second generate) UNTESTABLE here.
|
||||
Hard-rule stop condition NOT triggered (2 shell attempts, 0 blind retries on
|
||||
same fix). Pre-regen gate state is INTENTIONALLY red-by-design: fleet
|
||||
declares 64 skills / 15 terminal denies while disk still carries 63 skills /
|
||||
14 denies until the shell host regens — fail-closed, not a regression.
|
||||
No security check weakened or skipped, no `builtin:locked` touched, no
|
||||
`*..*` deny removed (still LAST in both maps), no
|
||||
`code_rewrite/lsp_rename/lsp_code_actions` deny removed, no `guidance_merge`
|
||||
introduced into `agent.yaml` `startup.files`, no `!cat` replaced with
|
||||
literals, no secrets/`OPENRIG_*` in `rig.yaml` `env:`, no proxy `0->1`, no
|
||||
`0.0.0.0`, no `:latest`, no symlinks, no generated leaf hand-edited (all
|
||||
edits are canonical catalog / toolchain / prompt-claim / unit-test; digests
|
||||
recompute on regen).
|
||||
`AUDIT_REPORT_FINDINGS.md` left untouched; `scripts/audit_loop.py` must spawn
|
||||
the next triad audit after a shell host regens (expect 64 skills), turns the
|
||||
full gate + `--check-idempotent` green, runs the two sabotage trios above,
|
||||
and commits.
|
||||
|
||||
## 2026-10-20 — Automated remediation pass (PROMPT_FLEET_AUDIT_REMEDIATION.md, HR-6.1-using-superpowers-prose-ref P3 + HR-5.5-tab-p-suffix-gap P3 — verify-only, regen-blocked)
|
||||
|
||||
Execution context: OpenCode file-tool-only run. Reading order followed strictly:
|
||||
`AUDIT_REPORT_FINDINGS.md` (114 lines, `STATUS: FINDINGS_DETECTED`) →
|
||||
`docs/OPENRIG_MUSE_GO_ARCHITECTURE.md` (`:1-30` pins + verdict table) →
|
||||
`PROMPT_SPOONFEEDER_OPENCODE_IMPLEMENTATION.md` (`:1-30` mission + hard rules) →
|
||||
`fleet/fleet.yaml` + `fleet/mcp-servers.yaml` + `scripts/generate-rigs.py` +
|
||||
`scripts/render-seat.py` + `scripts/verify-rigs.sh` + `scripts/gate-role.sh` +
|
||||
`scripts/seed-rig.py` + `scripts/bootstrap-pi-seats.sh` + `scripts/audit_loop.py` +
|
||||
`docker-compose.sidecars.yml` + `Makefile` + `identity-vectors.json` + `schemas/` +
|
||||
`specs/agents/_shared/skills/executing-plans/SKILL.md`.
|
||||
`default.shell` probes (directory probe, `echo blocked` probe, then the mandated
|
||||
`python3 ./scripts/generate-rigs.py` gate probe) each returned
|
||||
`{"type":"permission.rejected","message":"This non-interactive run cannot ask the user for permission, so the request was rejected. Continue without this action."}`
|
||||
(3 attempts, 0 blind retries; stop per hard rule 4). Therefore
|
||||
`python3 scripts/generate-rigs.py`, `./scripts/verify-rigs.sh --check-only`,
|
||||
`./scripts/bootstrap-pi-seats.sh --all --dry-run`, and
|
||||
`python3 ./scripts/audit_loop.py --self-test` could NOT be executed here. No
|
||||
`STATUS: NO_FINDINGS` claimed; shell-capable host must run the gate. Every HR
|
||||
finding re-verified by `Read`/`Grep`/`Glob` per the Cardinal Rule (no claim counted
|
||||
as VERIFIED by reading alone). `AUDIT_REPORT_FINDINGS.md` left untouched.
|
||||
|
||||
### Reproduction (exact Proof commands re-run via file tools — both findings REPRODUCED)
|
||||
|
||||
- HR-6.1: `Grep using-superpowers specs/agents/_shared/skills/executing-plans` →
|
||||
`SKILL.md:50` `` `../using-superpowers/references/` `` verbatim;
|
||||
`Read specs/agents/_shared/skills/` → 63 entries, no `using-superpowers*`;
|
||||
`Grep using-superpowers fleet/skills-lock.json` → zero hits (63 `"source"`
|
||||
entries, no `using-superpowers` key);
|
||||
`Grep using-superpowers fleet/` → only `fleet.yaml:3361-3362,3366`
|
||||
(fail-closed comment + `- id: using-superpowers / source: superpowers` live
|
||||
binding under `system-architect` `skills.shared`);
|
||||
`Read .scratch/vendor/obra_superpowers/skills/` → 15 entries INCLUDING
|
||||
`using-superpowers/`, so the upstream sibling exists and the prose ref is
|
||||
valid-but-unvendored. Gate blind spot already closed in source:
|
||||
`verify-rigs.sh:357-385` sibling-doc-ref block (fence-strip + `../([a-z0-9-]+)/`
|
||||
match, `fail()` at `:385`). REPRODUCED as staged-binding-without-regen.
|
||||
- HR-5.5: `Read specs/agents/languages/go-backend-eng/runtime/policy-enforcement.json:50-63` →
|
||||
14 denies (`"* -p*": "deny"` at `:60` immediately followed by
|
||||
`"*--patch*": "deny"` at `:61`, no `"*\t-p*"` line);
|
||||
`Read scripts/render-seat.py:402-419` → 15-tuple ending
|
||||
`"* -p*", "*\t-p*", "*--patch*", ...` (`:413-414` verbatim);
|
||||
`Read scripts/verify-rigs.sh:587-603` → `_TERMINAL_BASH_DENIES` requires all 15
|
||||
incl `"*\t-p*"` (`:587`) with terminality assert (`:597-603`);
|
||||
`Read scripts/gate-role.sh:69-76` → tab `-p` + `--full-diff` + `--textconv`
|
||||
deny probes present. Disk carries 14/15 denies; renderer+verifier require 15.
|
||||
REPRODUCED as stale generated tree failing its own fail-closed gate.
|
||||
- Sabotage table (`AUDIT_REPORT_FINDINGS.md:80-94`): all 12 rows
|
||||
`NOT RUN (shell blocked)` — none reports `Caught? = No`, so hard-rule-2
|
||||
reactive check NOT triggered.
|
||||
|
||||
### P3 — HR-6.1-using-superpowers-prose-ref (no source change this pass; regen pending)
|
||||
|
||||
- Root cause: fleet's canonical binding (`fleet.yaml:3366`) stages the 64th shared
|
||||
skill but `python3 scripts/generate-rigs.py` has not been re-run since it landed,
|
||||
so lock (63 entries) + disk (`specs/agents/_shared/skills/`, 63 dirs) +
|
||||
`_shared/agent.yaml` (63 ids) disagree with the source of truth. Prior
|
||||
2026-10-20 pass already made the fail-closed source fixes (fleet binding +
|
||||
`verify-rigs.sh:357-385` sibling gate + `generate-rigs.py` docstring `63 → 64` +
|
||||
prompt Claim 6.1 `63 → 64`); re-verified present by reading above. No further
|
||||
canonical defect found.
|
||||
- Files modified: none (hard rule 1 forbids hand-editing generated leaves —
|
||||
that would desync `configurationId`/`packageDigest`/`bodyDigest`; the fix is
|
||||
regen on a shell host).
|
||||
- Verification (TO RUN on shell host):
|
||||
`python3 scripts/generate-rigs.py` (expect 64 shared skills);
|
||||
`grep -rn "using-superpowers" specs/agents/_shared/skills/ fleet/` resolves to
|
||||
lock entry + vendored dir + fleet binding;
|
||||
`./scripts/verify-rigs.sh --check-only` → exit 0.
|
||||
Could NOT execute here — `default.shell permission.rejected` (verbatim below).
|
||||
- Status: SOURCE HARDENED (prior pass); REGEN PENDING shell.
|
||||
|
||||
### P3 — HR-5.5-tab-p-suffix-gap (no source change this pass; regen + live proof pending)
|
||||
|
||||
- Root cause: same stale-regen class — `render-seat.py:402-419` already emits the
|
||||
`"*\t-p*"` 15th terminal deny, `verify-rigs.sh:587-603` already requires it
|
||||
with the no-allow-after-block assert, and `gate-role.sh:69-76` already probes
|
||||
tab/`--full-diff`/`--textconv`, but all 102 checked-in permission files still
|
||||
carry 14 denies (representative `go-backend-eng:60-63` verbatim above).
|
||||
`generate-rigs.py:629-644` calls order-preserving `write_json`, so regen emits
|
||||
the TAB deny into all 102 files. Prior 2026-10-20 pass made these source fixes;
|
||||
re-verified present by reading above. No further canonical defect found.
|
||||
- Files modified: none (regen-only fix; hand-editing the 102 JSON leaves is
|
||||
forbidden by hard rule 1).
|
||||
- Verification (TO RUN on shell host): `python3 scripts/generate-rigs.py`
|
||||
(expect only permission files changed);
|
||||
repo-wide TAB-deny present in all 102 files;
|
||||
`./scripts/verify-rigs.sh --check-only` → exit 0;
|
||||
`bash scripts/gate-role.sh threat-modeler` → tab/`-p`/`--patch`/`--full-diff`/
|
||||
`--textconv` all deny with path-scoped allows still allow.
|
||||
Could NOT execute here — `default.shell permission.rejected`.
|
||||
- Status: SOURCE HARDENED (prior pass); REGEN + LIVE `pi` MATCHER PROOF PENDING.
|
||||
|
||||
### Sabotage coverage note (remediation hard rule 2)
|
||||
|
||||
This audit's Sabotage Results table reports every invariant as UNVERIFIABLE
|
||||
(shell blocked) — none as survived (`Caught? = No`) — so no rule-2 reactive check
|
||||
was triggered. Both findings' exact gaps already carry fail-closed gate coverage
|
||||
from the prior 2026-10-20 pass (sibling-doc-ref block HR-6.1; tab-deny + 4/4-probe
|
||||
+ terminality block HR-5.5), re-verified present this pass.
|
||||
|
||||
### Verification gate (mandated step 3 — all BLOCKED here, exact commands + verbatim outputs)
|
||||
|
||||
```bash
|
||||
python3 scripts/generate-rigs.py
|
||||
# -> NOT RUN: {"type":"permission.rejected","message":"This non-interactive run cannot ask the user for permission, so the request was rejected. Continue without this action."}
|
||||
./scripts/verify-rigs.sh --check-only
|
||||
# -> NOT RUN: same permission.rejected (gate-probe already rejected; not retried per hard rule 4)
|
||||
./scripts/bootstrap-pi-seats.sh --all --dry-run
|
||||
# -> NOT RUN: same permission.rejected (not retried — same error class)
|
||||
python3 ./scripts/audit_loop.py --self-test
|
||||
# -> NOT RUN: same permission.rejected
|
||||
python3 scripts/generate-rigs.py # second run idempotency
|
||||
# -> NOT RUN: same permission.rejected
|
||||
```
|
||||
|
||||
Deterministic idempotency (`git diff` after second generate) UNTESTABLE here.
|
||||
Hard-rule stop condition NOT triggered (3 shell attempts, 0 blind retries on same
|
||||
fix). No security check weakened or skipped, no `builtin:locked` touched, no
|
||||
`*..*` deny removed (still last in both maps), no
|
||||
`code_rewrite/lsp_rename/lsp_code_actions` deny removed, no `guidance_merge`
|
||||
introduced into `agent.yaml` `startup.files`, no `!cat` replaced with literals,
|
||||
no secrets/`OPENRIG_*` in `rig.yaml` `env:`, no proxy `0→1`, no `0.0.0.0`, no
|
||||
`:latest`, no symlink, no generated leaf hand-edited.
|
||||
`AUDIT_REPORT_FINDINGS.md` left untouched; `scripts/audit_loop.py` must spawn the
|
||||
next triad audit after a shell host regens (expect 64 skills + 15 denies), turns
|
||||
the full gate + `--check-idempotent` green, runs the two sabotage trios, and commits.
|
||||
|
||||
## 2026-10-20 — EXECUTED remediation pass (build mode, shell available; gate GREEN 22/0)
|
||||
|
||||
Execution context: OpenCode interactive session, build mode — `default.shell`
|
||||
available. Reading order followed: `AUDIT_REPORT_FINDINGS.md` (114 lines,
|
||||
`STATUS: FINDINGS_DETECTED`, 2 P3 findings) → `docs/OPENRIG_MUSE_GO_ARCHITECTURE.md`
|
||||
→ `PROMPT_SPOONFEEDER_OPENCODE_IMPLEMENTATION.md` → `fleet/fleet.yaml` +
|
||||
`fleet/mcp-servers.yaml` + `scripts/generate-rigs.py` + `scripts/render-seat.py` +
|
||||
`scripts/verify-rigs.sh` + `scripts/gate-role.sh` + `scripts/audit_loop.py` +
|
||||
`docker-compose.sidecars.yml` + `Makefile` + `identity-vectors.json` + `schemas/`.
|
||||
|
||||
### Reproduction (Proof commands executed, both findings REPRODUCED pre-regen)
|
||||
|
||||
- `ls specs/agents/_shared/skills | wc -l` → `63`, no `using-superpowers`;
|
||||
`grep -c using-superpowers fleet/skills-lock.json` → `0` hits on the id
|
||||
(63 `"source"` entries); `fleet.yaml:3366` live binding present.
|
||||
HR-6.1 REPRODUCED as staged-binding-without-regen.
|
||||
- `python3 -c` JSON-key probe on
|
||||
`specs/agents/languages/go-backend-eng/runtime/policy-enforcement.json` →
|
||||
`has TAB key: False`; `render-seat.py:414` emits `"*\t-p*"` (backslash-t
|
||||
source → TAB at runtime); `verify-rigs.sh:587` requires 15 denies incl TAB.
|
||||
HR-5.5 REPRODUCED as stale generated tree (14/15 denies on disk).
|
||||
|
||||
### P3 — HR-6.1-using-superpowers-prose-ref (REMEDIATED by regen; no new source edit)
|
||||
|
||||
- Root cause: fleet's canonical `system-architect` binding
|
||||
(`fleet.yaml:3366` `- id: using-superpowers / source: superpowers`, added by
|
||||
the prior 2026-10-20 pass along with the `verify-rigs.sh:357-385`
|
||||
sibling-doc-ref gate) was never materialized — lock + disk + digests still
|
||||
reflected the 63-skill subset although vendor
|
||||
`.scratch/vendor/obra_superpowers/skills/using-superpowers/` exists.
|
||||
- Files modified: none this pass (canonical catalog + gate already correct).
|
||||
- Fix executed: `HERETEK_RIGS_ALLOW_DIRTY=1 python3 ./scripts/generate-rigs.py`
|
||||
→ `wrote 51 specialist AgentSpecs, 64 shared skills, 8 RigBundles, Roster, and Registry views ...`
|
||||
(ALLOW_DIRTY still records the real HEAD SHA `99b4420c`, never the
|
||||
`SYNTHETIC-` fallback; dirty flag is due to this pass's own uncommitted
|
||||
source fixes + `.opencode/opencode-loop/` session logs, not a provenance gap).
|
||||
Post-regen: `ls specs/agents/_shared/skills | wc -l` → `64`,
|
||||
`using-superpowers` present on disk, lock carries the 64th entry.
|
||||
- Sabotage proof (fail-closed): `mv specs/agents/_shared/skills/using-superpowers /tmp/opencode/...`
|
||||
→ `./scripts/verify-rigs.sh --check-only` → `EXIT:1` with
|
||||
`[FAIL] Shared skill count mismatch (expected 64)`,
|
||||
`[FAIL] shared skill using-superpowers: missing directory ...`,
|
||||
`[FAIL] shared skill executing-plans: doc ref ../using-superpowers/ has no vendored sibling skill directory ...`;
|
||||
restored → `EXIT:0`. (Hard rule 2 satisfied: gate catches the invariant.)
|
||||
- Status: FIXED (regen materialized; gate green).
|
||||
|
||||
### P3 — HR-5.5-tab-p-suffix-gap (REMEDIATED by regen + 1-line verifier-literal fix)
|
||||
|
||||
- Root cause (two legs): (1) stale tree — all 102 permission files carried 14
|
||||
terminal denies while renderer + verifier required 15 (`"*\t-p*"`); regen
|
||||
emits the TAB deny via the order-preserving `write_json` path.
|
||||
(2) Real gate bug found during this executed pass: `verify-rigs.sh:1149`
|
||||
(renderer-emit check) tested `'"*\t-p*"'` — a Python literal that evaluates
|
||||
to a real TAB — against `render-seat.py` source text, which contains the
|
||||
2-byte `backslash-t` escape. Post-regen the gate reported
|
||||
`SUMMARY: 22 checks passed, 1 failed` with
|
||||
`[FAIL] scripts/render-seat.py must emit terminal "*<TAB>-p*" bash deny`
|
||||
even though the renderer was correct (all 51 seats validated, TAB key present
|
||||
in parsed JSON). One-line fail-closed correction, no check removed:
|
||||
`scripts/verify-rigs.sh:1149` `'"*\t-p*"'` → `'"*\\t-p*"'` (match the source
|
||||
encoding; runtime TAB semantics unchanged — line 587 still compares TAB keys
|
||||
against parsed JSON, and the generated JSON carries a real TAB key).
|
||||
- Files modified: `scripts/verify-rigs.sh` (1 line, renderer-emit literal only).
|
||||
`scripts/render-seat.py` untouched (already correct; a sabotage probe that
|
||||
deleted its tab line tripped `tests/test_render_seat.py` → gate `EXIT:1`,
|
||||
then the renderer was restored byte-identical and the gate returned to green —
|
||||
no residual drift: `git diff --stat scripts/render-seat.py` → 5 insertions,
|
||||
matching the prior pass's fix).
|
||||
- Fix executed: same regen as HR-6.1; post-regen probe:
|
||||
`has TAB key: True` (`'*\t-p*'` in `permission.bash`), 64 skills.
|
||||
- Sabotage proofs (fail-closed, order-preserving edits): delete TAB deny from
|
||||
both `policy-enforcement.json` + `pi-permission-config.json`
|
||||
→ `EXIT:1` with `[FAIL] go-backend-eng: permission bash must contain terminal
|
||||
deny '*<TAB>-p*': deny`; restored → `EXIT:0`. (Single-file delete trips the
|
||||
specs↔seat parity check first — also `EXIT:1`, defense in depth.)
|
||||
- Status: FIXED (regen materialized + verifier literal corrected; gate green).
|
||||
|
||||
### Verification gate (mandated step 3 — EXECUTED, verbatim)
|
||||
|
||||
```bash
|
||||
HERETEK_RIGS_ALLOW_DIRTY=1 python3 ./scripts/generate-rigs.py
|
||||
# -> wrote 51 specialist AgentSpecs, 64 shared skills, 8 RigBundles, Roster, and Registry views under /home/john/Projects/heretek-rig-workspace/heretek-rigs
|
||||
./scripts/verify-rigs.sh --check-only
|
||||
# -> SUMMARY: 22 checks passed, 0 failed. EXIT:0
|
||||
./scripts/bootstrap-pi-seats.sh --all --dry-run
|
||||
# -> EXIT:2 error: missing /home/john/.config/heretek-rigs/secrets/opencode-go.key (chmod 600)
|
||||
# (specified HR-4.2 strict-default behavior: fail-closed without secrets, not a finding)
|
||||
./scripts/bootstrap-pi-seats.sh --all --dry-run --allow-missing-secrets
|
||||
# -> EXIT:0 bootstrap-pi-seats: [DRY-RUN] would provision 54 Pi seat directories under /home/john/.openrig/state/pi
|
||||
python3 ./scripts/audit_loop.py --self-test
|
||||
# -> SELF-TEST PASSED: audit_loop.py is ready for autonomous OpenCode execution. EXIT:0
|
||||
# (self-test internally re-runs verify-rigs.sh → passed; 7/7 adversarial vectors classified)
|
||||
HERETEK_RIGS_ALLOW_DIRTY=1 python3 ./scripts/generate-rigs.py # second run
|
||||
# -> wrote 51 ... / git status diff before-vs-after EMPTY → IDEMPOTENT: zero additional changes
|
||||
```
|
||||
|
||||
Sabotage trio summary: tab-deny delete → `EXIT:1` → restore `EXIT:0`;
|
||||
vendored-sibling delete → `EXIT:1` (count + sibling-doc-ref FAILs) → restore `EXIT:0`;
|
||||
renderer tab-line delete → `EXIT:1` (unit-test FAIL) → restored byte-identical → `EXIT:0`.
|
||||
|
||||
Hard-rule compliance: no security check weakened or skipped (1-line verifier fix
|
||||
corrects a false-positive literal; the check still fails closed — proven by the
|
||||
trio above); no `builtin:locked` touched; no `*..*` deny moved (still last);
|
||||
no `code_rewrite/lsp_rename/lsp_code_actions` deny removed; no `guidance_merge`
|
||||
introduced; no `!cat` replaced; no proxy `0→1`; no `0.0.0.0`; no `:latest`;
|
||||
no symlink; no generated leaf hand-edited (all 359 modified tracked files flow
|
||||
from `generate-rigs.py`; 60 untracked entries are `.opencode/opencode-loop/`
|
||||
session logs only).
|
||||
`AUDIT_REPORT_FINDINGS.md` left untouched; `scripts/audit_loop.py` must now spawn
|
||||
the next triad audit, which should confirm `STATUS: NO_FINDINGS` (gate 22/0,
|
||||
self-test passed, regen idempotent).
|
||||
@@ -145,3 +145,9 @@
|
||||
- Reproduction via file tools: HR-2.1 `pinned.json:10-14` placeholder + gate `:183-186` 64-hex-or-fail + `Glob schemas/openrig-cli-0.6.11.tgz` → absent (REPRODUCED); HR-6.1 62 `*/SKILL.md` / zero lock `subagent` hits vs fleet binds `:2860,:3359` + executing-plans refs `:53,60,121,126,236` + vendor `skills/subagent-driven-development/` (`SKILL.md` + `scripts/` + 3 prompts) present (REPRODUCED); HR-5.5-superset `:559-575` declared-only vs `:534-539` mcp-only + `:481` rendered↔rendered + `:1151-1157` no re-run (REPRODUCED); HR-5.5-patch `git log --oneline -p` matching allow `:24-27` with none of the 10 terminal denies matching `-p` (REPRODUCED). Sabotage 12× NOT RUN at audit time, zero `Caught? = No` → hard rule 2 not triggered (new checks below are finding-remediation, not rule-2 reactive).
|
||||
- Source fixes this pass (fail-closed, minimal; NO generated leaves hand-edited per hard rule 1 — `specs/`/`rigs/` still carry the 10-deny set + 62 skills, so the gate stays red BY DESIGN until a shell host regens): `render-seat.py:387-414` +4 terminal patch denies (`* -p*`, `*--patch*`, `*--full-diff*`, `*--textconv*`) LAST with residual doc; `verify-rigs.sh` V1 subset check (`rendered bash/path_write allows ⊆ fleet-declared`) + 10→14 terminal asserts (`_TERMINAL_BASH_DENIES`, presence + order) + `:1081-1089` renderer-emit asserts; `gate-role.sh` canary `fleet/fleet.yaml` commit + 2 must-deny patch probes + 1 anti-over-block allow probe; `tests/test_render_seat.py` asserts → 14; `PROMPT_ADVERSARIAL_FLEET_AUDIT.md:133` claim lists 14 denies + subset clause. `Grep` fleet `bash_allow` → zero `-p`/`--patch`/`--textconv`/`--full-diff` substrings (clean regen unaffected). No check weakened; 20× `builtin:locked`, `*..*` deny-last, triple-deny, `!cat`, loopback/pinned sidecars preserved.
|
||||
- HR-2.1 + HR-6.1 STILL OPEN — BLOCKED HERE (need networked shell: `npm pack` → record SHA → commit/stash or `ALLOW_DIRTY=1` regen expecting 63 skills + 14 denies + refreshed digests → full gate + idempotence green). `AUDIT_REPORT_FINDINGS.md` untouched; `audit_loop.py` spawns next triad audit after green. Full per-HR mapping in `REMEDIATION_LOG.md` latest entry.
|
||||
|
||||
## 2026-10-20 — Remediation pass per PROMPT_FLEET_AUDIT_REMEDIATION.md (2-finding P3 sweep: HR-6.1-using-superpowers-prose-ref + HR-5.5-tab-p-suffix-gap)
|
||||
- `default.shell` 2 attempts, 0 blind retries (stopped well before hard rule 4 limit of 3 — same `permission.rejected` error class, no further shell calls): (1) `python3 ./scripts/generate-rigs.py` → `{"type":"permission.rejected","message":"This non-interactive run cannot ask the user for permission, so the request was rejected. Continue without this action."}`; (2) `true` probe → same `permission.rejected`. `python3 scripts/generate-rigs.py`, `./scripts/verify-rigs.sh --check-only`, `./scripts/bootstrap-pi-seats.sh --all --dry-run`, `python3 ./scripts/audit_loop.py --self-test` → NOT RUN. Second-run idempotency UNTESTABLE.
|
||||
- Reproduction via file tools: HR-6.1 `executing-plans/SKILL.md:50` `` `../using-superpowers/references/` `` vs zero `using-superpowers*` dirs/lock hits, vendor source `.scratch/vendor/obra_superpowers/skills/using-superpowers/` (`SKILL.md` + `references/` incl `pi-tools.md`) present, gate `:337-356` blind to `../<id>/references/` shape (REPRODUCED); HR-5.5 `* -p*` space-anchored + `render-seat.py:362` ban missing `\t` + `gate-role.sh:69-70` 2/4 probes + `verify-rigs.sh:565-567` sortedness-only order gate (REPRODUCED). Sabotage table 12× UNVERIFIABLE/NOT RUN, zero `Caught? = No` → rule 2 not triggered (new sibling-doc-ref + tab-deny + terminality coverage added proactively).
|
||||
- Source fixes (fail-closed, minimal; NO generated leaves hand-edited per hard rule 1 — disk still carries 63 skills / 14 denies, so the gate stays red BY DESIGN until a shell host regens): `fleet/fleet.yaml` system-architect `shared:` += `using-superpowers` (superpowers) → regen vendors 64; `verify-rigs.sh` 63→64 count + fenced-stripped `../([a-z0-9-]+)/` sibling-doc-ref gate + `"*\t-p*"` terminal deny + terminality assert (no allow after deny block) + renderer-emit check; `render-seat.py` terminal tuple += `"*\t-p*"`; `gate-role.sh` += tab-`-p` + `--full-diff` + `--textconv` deny probes (4/4 flags); `tests/test_render_seat.py` += tab deny; `generate-rigs.py` docstring 63→64; audit prompt Beta/5.5/Domain-6/6.1 claims → 64 skills + 15 denies + sibling-resolves invariant. No check weakened; 20× `builtin:locked`, `*..*` deny-last, triple-deny, `!cat`, loopback/pinned sidecars preserved.
|
||||
- Shell host MUST: `HERETEK_RIGS_ALLOW_DIRTY=1 python3 scripts/generate-rigs.py` (expect 64 shared skills + 15 terminal denies) → `./scripts/verify-rigs.sh --check-only` → `python3 ./scripts/audit_loop.py --self-test` → `python3 scripts/generate-rigs.py --check-idempotent` → scratch-copy sabotage trios (rm `using-superpowers` sibling; delete `"*\t-p*"`; trailing-allow inject — each must flip gate 0→1) → commit → `audit_loop.py` spawns next triad audit. Full per-HR mapping in `REMEDIATION_LOG.md` latest entry. `AUDIT_REPORT_FINDINGS.md` untouched.
|
||||
@@ -3358,6 +3358,13 @@ roles:
|
||||
source: superpowers
|
||||
- id: subagent-driven-development
|
||||
source: superpowers
|
||||
# HR-6.1-using-superpowers-prose-ref (fail-closed): executing-plans
|
||||
# SKILL.md points at `../using-superpowers/references/` (per-platform
|
||||
# references incl pi-tools.md). The sibling must be vendored so the
|
||||
# ref resolves; the generator unions this into the shared pool
|
||||
# (fleet/skills-lock.json + specs/agents/_shared/skills/).
|
||||
- id: using-superpowers
|
||||
source: superpowers
|
||||
role_local:
|
||||
- id: madr-architecture-decision
|
||||
source: heretek-crew
|
||||
|
||||
@@ -343,6 +343,12 @@
|
||||
"tree": "sha256:b5295fdd7d884e8af6a8cefb019e841ffd12681b02308183a0753a8100623192",
|
||||
"license_file": "LICENSE (copied from source root)"
|
||||
},
|
||||
"using-superpowers": {
|
||||
"source": "obra/superpowers@bb92a77",
|
||||
"path": "skills/using-superpowers",
|
||||
"tree": "sha256:1403e7978a16bef5ccb230006ba1fafcc165fcced2fe0b41ba1c6387e5b5b6ad",
|
||||
"license_file": "LICENSE (copied from source root)"
|
||||
},
|
||||
"variant-analysis": {
|
||||
"source": "trailofbits/skills@5c99c03",
|
||||
"path": "plugins/variant-analysis/skills/variant-analysis",
|
||||
|
||||
@@ -6,7 +6,7 @@ summary: Cloud IaC (OpenTofu), Kubernetes orchestration, SRE incident response,
|
||||
source:
|
||||
repository: https://github.com/Heretek-AI/heretek-rigs
|
||||
folder: rigs/cloud-sre-and-data-platform
|
||||
resolvedCommit: 9ec0014ff44e7e174f6d7a5c74590de5f8fe664f
|
||||
resolvedCommit: 99b4420c6a2e50749c8bb0b3a8d02186b9aa2b41
|
||||
requestedRef: main
|
||||
configurations:
|
||||
- id: data.analytics-metrics-eng=pi,data.cache-streaming-eng=pi,data.data-pipeline-eng=pi,data.dba-specialist=pi,ml.mlops-serving-eng=pi,ml.vector-rag-spec=pi,platform.cloud-platform-eng=pi,platform.dependency-patcher=pi,platform.k8s-orchestrator=pi,sre.observability-eng=pi,sre.sre-incident-eng=pi
|
||||
@@ -14,7 +14,7 @@ configurations:
|
||||
recommended: true
|
||||
packageDigest:
|
||||
algorithm: sha256
|
||||
value: 6c161de9d9a80b57959336558a5d3cef0830071e8535e8199074d93d2985979d
|
||||
value: e721950b7b33ee880706efd6cab15e6c54acfb9db265f558761d11d2c4a76f60
|
||||
coverage: openrig.package-digest/v1
|
||||
assembler:
|
||||
openrigVersion: 0.6.11
|
||||
|
||||
@@ -6,7 +6,7 @@ summary: 'Zero-trust defensive security and red-team rig: STRIDE threat modeling
|
||||
source:
|
||||
repository: https://github.com/Heretek-AI/heretek-rigs
|
||||
folder: rigs/defensive-sec-and-red-team
|
||||
resolvedCommit: 9ec0014ff44e7e174f6d7a5c74590de5f8fe664f
|
||||
resolvedCommit: 99b4420c6a2e50749c8bb0b3a8d02186b9aa2b41
|
||||
requestedRef: main
|
||||
configurations:
|
||||
- id: blue.appsec-engineer=pi,blue.cloud-sec-auditor=pi,blue.compliance-auditor=pi,blue.threat-modeler=pi,red.ai-red-teamer=pi,red.binary-reverse-eng=pi,red.firmware-sec-analyst=pi
|
||||
@@ -14,7 +14,7 @@ configurations:
|
||||
recommended: true
|
||||
packageDigest:
|
||||
algorithm: sha256
|
||||
value: 5693f48128dcf88730baa2c4e5b000a6ecc816e575b31ecf0a3f19f1147406f8
|
||||
value: 3cbb630dd4c11834d6d36f95e80b04b21df69402cc9180319d361db9ce3e3823
|
||||
coverage: openrig.package-digest/v1
|
||||
assembler:
|
||||
openrigVersion: 0.6.11
|
||||
|
||||
@@ -6,7 +6,7 @@ summary: Executive governance, product strategy, sprint decomposition, system ar
|
||||
source:
|
||||
repository: https://github.com/Heretek-AI/heretek-rigs
|
||||
folder: rigs/executive-and-architecture
|
||||
resolvedCommit: 9ec0014ff44e7e174f6d7a5c74590de5f8fe664f
|
||||
resolvedCommit: 99b4420c6a2e50749c8bb0b3a8d02186b9aa2b41
|
||||
requestedRef: main
|
||||
configurations:
|
||||
- id: delivery.git-drift-coord=pi,delivery.tech-docs-lead=pi,delivery.tpm-scrum-lead=pi,exec.exec-director=pi,exec.product-director=pi,exec.system-architect=pi
|
||||
@@ -14,7 +14,7 @@ configurations:
|
||||
recommended: true
|
||||
packageDigest:
|
||||
algorithm: sha256
|
||||
value: 0c4fa47e54804fa9cfb7939da466c09dcd438f2ea243d386e6776519873c4030
|
||||
value: 079592db2faa10d592dd0e20393fd86c9bb97bda7b4a5dc7c7d5d827135b8f71
|
||||
coverage: openrig.package-digest/v1
|
||||
assembler:
|
||||
openrigVersion: 0.6.11
|
||||
|
||||
@@ -6,7 +6,7 @@ summary: End-to-end web, backend microservice, UI/UX design system, frontend per
|
||||
source:
|
||||
repository: https://github.com/Heretek-AI/heretek-rigs
|
||||
folder: rigs/fullstack-and-web-studio
|
||||
resolvedCommit: 9ec0014ff44e7e174f6d7a5c74590de5f8fe664f
|
||||
resolvedCommit: 99b4420c6a2e50749c8bb0b3a8d02186b9aa2b41
|
||||
requestedRef: main
|
||||
configurations:
|
||||
- id: build.go-backend-eng=pi,build.java-kotlin-eng=pi,build.python-backend-spec=pi,build.ts-node-fullstack=pi,design.a11y-specialist=pi,design.brand-copy-spec=pi,design.design-system-eng=pi,design.fe-perf-eng=pi,design.mobile-web-eng=pi,design.ui-ux-designer=pi,design.ux-research-analyst=pi
|
||||
@@ -14,7 +14,7 @@ configurations:
|
||||
recommended: true
|
||||
packageDigest:
|
||||
algorithm: sha256
|
||||
value: df5c93e32f21561bf94ebb2443f1fde50b8ed870fe7bac25b318ca92dd9faff4
|
||||
value: 8348cc1caaf255d3c0a0af3458387cf9d830f6afe3c5b03d20e7c7ba967303c7
|
||||
coverage: openrig.package-digest/v1
|
||||
assembler:
|
||||
openrigVersion: 0.6.11
|
||||
|
||||
@@ -6,7 +6,7 @@ summary: Real-time game engine architecture, ECS systems, deterministic physics
|
||||
source:
|
||||
repository: https://github.com/Heretek-AI/heretek-rigs
|
||||
folder: rigs/game-dev-and-sim-rig
|
||||
resolvedCommit: 9ec0014ff44e7e174f6d7a5c74590de5f8fe664f
|
||||
resolvedCommit: 99b4420c6a2e50749c8bb0b3a8d02186b9aa2b41
|
||||
requestedRef: main
|
||||
configurations:
|
||||
- id: engine.engine-systems-eng=pi,engine.graphics-shader-eng=pi,engine.physics-sim-eng=pi,gameplay.game-ai-dev=pi,gameplay.game-systems-dev=pi,gameplay.tech-artist-pipeline=pi
|
||||
@@ -14,7 +14,7 @@ configurations:
|
||||
recommended: true
|
||||
packageDigest:
|
||||
algorithm: sha256
|
||||
value: c498513b47ad27e6f89b26133433feca1c014a3a5dd83817c6cf7f1353ae4b3f
|
||||
value: ad5b75ae28b41b35d83d167e8d3c3fea4186c1d86fe8f6728b04dfa19cc93b8d
|
||||
coverage: openrig.package-digest/v1
|
||||
assembler:
|
||||
openrigVersion: 0.6.11
|
||||
|
||||
@@ -6,7 +6,7 @@ summary: Master composable 51-agent omni-fleet topology booting a 3-seat command
|
||||
source:
|
||||
repository: https://github.com/Heretek-AI/heretek-rigs
|
||||
folder: rigs/heretek-omni-fleet
|
||||
resolvedCommit: 9ec0014ff44e7e174f6d7a5c74590de5f8fe664f
|
||||
resolvedCommit: 99b4420c6a2e50749c8bb0b3a8d02186b9aa2b41
|
||||
requestedRef: main
|
||||
configurations:
|
||||
- id: command.exec-director=pi,command.system-architect=pi,command.tpm-scrum-lead=pi
|
||||
@@ -14,7 +14,7 @@ configurations:
|
||||
recommended: true
|
||||
packageDigest:
|
||||
algorithm: sha256
|
||||
value: d40547936a10a7a046e5974cdc035c414380a4760b17b8b540532a2c642f087c
|
||||
value: c936ce5827cd38cd417c30b94b0e4a4e53e5168abb8843918e247f2773cfc3b0
|
||||
coverage: openrig.package-digest/v1
|
||||
assembler:
|
||||
openrigVersion: 0.6.11
|
||||
|
||||
@@ -6,7 +6,7 @@ summary: 'Adversarial quality assurance gauntlet: Playwright E2E browser automat
|
||||
source:
|
||||
repository: https://github.com/Heretek-AI/heretek-rigs
|
||||
folder: rigs/qa-and-verification-gauntlet
|
||||
resolvedCommit: 9ec0014ff44e7e174f6d7a5c74590de5f8fe664f
|
||||
resolvedCommit: 99b4420c6a2e50749c8bb0b3a8d02186b9aa2b41
|
||||
requestedRef: main
|
||||
configurations:
|
||||
- id: qa.api-contract-tester=pi,qa.e2e-browser-qa=pi,qa.load-stress-tester=pi,qa.release-qa-officer=pi,qa.sabotage-qa-tester=pi,qa.static-analysis-lead=pi
|
||||
@@ -14,7 +14,7 @@ configurations:
|
||||
recommended: true
|
||||
packageDigest:
|
||||
algorithm: sha256
|
||||
value: 1468bdb0659d597e3c18fd0bd2e0784057086472adfc746340f181aecf5b93ee
|
||||
value: d2625b1da491c5632314c5e3d1403debc554bf54fa11a56f04eae8f6e5818ffa
|
||||
coverage: openrig.package-digest/v1
|
||||
assembler:
|
||||
openrigVersion: 0.6.11
|
||||
|
||||
@@ -6,7 +6,7 @@ summary: Low-level Rust and C++ systems programming paired with native Android (
|
||||
source:
|
||||
repository: https://github.com/Heretek-AI/heretek-rigs
|
||||
folder: rigs/systems-and-mobile-foundry
|
||||
resolvedCommit: 9ec0014ff44e7e174f6d7a5c74590de5f8fe664f
|
||||
resolvedCommit: 99b4420c6a2e50749c8bb0b3a8d02186b9aa2b41
|
||||
requestedRef: main
|
||||
configurations:
|
||||
- id: mobile.android-mobile-spec=pi,mobile.ios-mobile-spec=pi,systems.cpp-lowlevel-eng=pi,systems.rust-systems-spec=pi
|
||||
@@ -14,7 +14,7 @@ configurations:
|
||||
recommended: true
|
||||
packageDigest:
|
||||
algorithm: sha256
|
||||
value: 0f9e97bfc580dc839da0ac92107880b8b5cd79ecb7d8711ff0a03a647e2a525d
|
||||
value: f6cb83210cd2005473a6543e52b4e23405ea5a2ad678a0031ade31c289f48486
|
||||
coverage: openrig.package-digest/v1
|
||||
assembler:
|
||||
openrigVersion: 0.6.11
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
"packageDigests": [
|
||||
{
|
||||
"algorithm": "sha256",
|
||||
"value": "0c4fa47e54804fa9cfb7939da466c09dcd438f2ea243d386e6776519873c4030",
|
||||
"value": "079592db2faa10d592dd0e20393fd86c9bb97bda7b4a5dc7c7d5d827135b8f71",
|
||||
"coverage": "openrig.package-digest/v1"
|
||||
}
|
||||
]
|
||||
@@ -48,7 +48,7 @@
|
||||
"packageDigests": [
|
||||
{
|
||||
"algorithm": "sha256",
|
||||
"value": "df5c93e32f21561bf94ebb2443f1fde50b8ed870fe7bac25b318ca92dd9faff4",
|
||||
"value": "8348cc1caaf255d3c0a0af3458387cf9d830f6afe3c5b03d20e7c7ba967303c7",
|
||||
"coverage": "openrig.package-digest/v1"
|
||||
}
|
||||
]
|
||||
@@ -74,7 +74,7 @@
|
||||
"packageDigests": [
|
||||
{
|
||||
"algorithm": "sha256",
|
||||
"value": "0f9e97bfc580dc839da0ac92107880b8b5cd79ecb7d8711ff0a03a647e2a525d",
|
||||
"value": "f6cb83210cd2005473a6543e52b4e23405ea5a2ad678a0031ade31c289f48486",
|
||||
"coverage": "openrig.package-digest/v1"
|
||||
}
|
||||
]
|
||||
@@ -100,7 +100,7 @@
|
||||
"packageDigests": [
|
||||
{
|
||||
"algorithm": "sha256",
|
||||
"value": "c498513b47ad27e6f89b26133433feca1c014a3a5dd83817c6cf7f1353ae4b3f",
|
||||
"value": "ad5b75ae28b41b35d83d167e8d3c3fea4186c1d86fe8f6728b04dfa19cc93b8d",
|
||||
"coverage": "openrig.package-digest/v1"
|
||||
}
|
||||
]
|
||||
@@ -126,7 +126,7 @@
|
||||
"packageDigests": [
|
||||
{
|
||||
"algorithm": "sha256",
|
||||
"value": "6c161de9d9a80b57959336558a5d3cef0830071e8535e8199074d93d2985979d",
|
||||
"value": "e721950b7b33ee880706efd6cab15e6c54acfb9db265f558761d11d2c4a76f60",
|
||||
"coverage": "openrig.package-digest/v1"
|
||||
}
|
||||
]
|
||||
@@ -152,7 +152,7 @@
|
||||
"packageDigests": [
|
||||
{
|
||||
"algorithm": "sha256",
|
||||
"value": "1468bdb0659d597e3c18fd0bd2e0784057086472adfc746340f181aecf5b93ee",
|
||||
"value": "d2625b1da491c5632314c5e3d1403debc554bf54fa11a56f04eae8f6e5818ffa",
|
||||
"coverage": "openrig.package-digest/v1"
|
||||
}
|
||||
]
|
||||
@@ -178,7 +178,7 @@
|
||||
"packageDigests": [
|
||||
{
|
||||
"algorithm": "sha256",
|
||||
"value": "5693f48128dcf88730baa2c4e5b000a6ecc816e575b31ecf0a3f19f1147406f8",
|
||||
"value": "3cbb630dd4c11834d6d36f95e80b04b21df69402cc9180319d361db9ce3e3823",
|
||||
"coverage": "openrig.package-digest/v1"
|
||||
}
|
||||
]
|
||||
@@ -204,7 +204,7 @@
|
||||
"packageDigests": [
|
||||
{
|
||||
"algorithm": "sha256",
|
||||
"value": "d40547936a10a7a046e5974cdc035c414380a4760b17b8b540532a2c642f087c",
|
||||
"value": "c936ce5827cd38cd417c30b94b0e4a4e53e5168abb8843918e247f2773cfc3b0",
|
||||
"coverage": "openrig.package-digest/v1"
|
||||
}
|
||||
]
|
||||
@@ -231,5 +231,5 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"bodyDigest": "4944318f8ff48e079f426a1761d6532688860a61453693bbd666538303e4e81b"
|
||||
"bodyDigest": "ab27d9ce5a776d2cd63d45dcada77f6e3c75684413e3869db2b2734180781203"
|
||||
}
|
||||
@@ -5,14 +5,14 @@
|
||||
"source": {
|
||||
"repository": "https://github.com/Heretek-AI/heretek-rigs",
|
||||
"folder": "rigs/cloud-sre-and-data-platform",
|
||||
"resolvedCommit": "9ec0014ff44e7e174f6d7a5c74590de5f8fe664f",
|
||||
"resolvedCommit": "99b4420c6a2e50749c8bb0b3a8d02186b9aa2b41",
|
||||
"requestedRef": "main",
|
||||
"canonicalUrl": "https://github.com/Heretek-AI/heretek-rigs/tree/9ec0014ff44e7e174f6d7a5c74590de5f8fe664f/rigs/cloud-sre-and-data-platform"
|
||||
"canonicalUrl": "https://github.com/Heretek-AI/heretek-rigs/tree/99b4420c6a2e50749c8bb0b3a8d02186b9aa2b41/rigs/cloud-sre-and-data-platform"
|
||||
},
|
||||
"configurationId": "data.analytics-metrics-eng=pi,data.cache-streaming-eng=pi,data.data-pipeline-eng=pi,data.dba-specialist=pi,ml.mlops-serving-eng=pi,ml.vector-rag-spec=pi,platform.cloud-platform-eng=pi,platform.dependency-patcher=pi,platform.k8s-orchestrator=pi,sre.observability-eng=pi,sre.sre-incident-eng=pi",
|
||||
"packageDigest": {
|
||||
"algorithm": "sha256",
|
||||
"value": "6c161de9d9a80b57959336558a5d3cef0830071e8535e8199074d93d2985979d",
|
||||
"value": "e721950b7b33ee880706efd6cab15e6c54acfb9db265f558761d11d2c4a76f60",
|
||||
"coverage": "openrig.package-digest/v1"
|
||||
},
|
||||
"assembler": {
|
||||
|
||||
@@ -5,14 +5,14 @@
|
||||
"source": {
|
||||
"repository": "https://github.com/Heretek-AI/heretek-rigs",
|
||||
"folder": "rigs/defensive-sec-and-red-team",
|
||||
"resolvedCommit": "9ec0014ff44e7e174f6d7a5c74590de5f8fe664f",
|
||||
"resolvedCommit": "99b4420c6a2e50749c8bb0b3a8d02186b9aa2b41",
|
||||
"requestedRef": "main",
|
||||
"canonicalUrl": "https://github.com/Heretek-AI/heretek-rigs/tree/9ec0014ff44e7e174f6d7a5c74590de5f8fe664f/rigs/defensive-sec-and-red-team"
|
||||
"canonicalUrl": "https://github.com/Heretek-AI/heretek-rigs/tree/99b4420c6a2e50749c8bb0b3a8d02186b9aa2b41/rigs/defensive-sec-and-red-team"
|
||||
},
|
||||
"configurationId": "blue.appsec-engineer=pi,blue.cloud-sec-auditor=pi,blue.compliance-auditor=pi,blue.threat-modeler=pi,red.ai-red-teamer=pi,red.binary-reverse-eng=pi,red.firmware-sec-analyst=pi",
|
||||
"packageDigest": {
|
||||
"algorithm": "sha256",
|
||||
"value": "5693f48128dcf88730baa2c4e5b000a6ecc816e575b31ecf0a3f19f1147406f8",
|
||||
"value": "3cbb630dd4c11834d6d36f95e80b04b21df69402cc9180319d361db9ce3e3823",
|
||||
"coverage": "openrig.package-digest/v1"
|
||||
},
|
||||
"assembler": {
|
||||
|
||||
@@ -5,14 +5,14 @@
|
||||
"source": {
|
||||
"repository": "https://github.com/Heretek-AI/heretek-rigs",
|
||||
"folder": "rigs/executive-and-architecture",
|
||||
"resolvedCommit": "9ec0014ff44e7e174f6d7a5c74590de5f8fe664f",
|
||||
"resolvedCommit": "99b4420c6a2e50749c8bb0b3a8d02186b9aa2b41",
|
||||
"requestedRef": "main",
|
||||
"canonicalUrl": "https://github.com/Heretek-AI/heretek-rigs/tree/9ec0014ff44e7e174f6d7a5c74590de5f8fe664f/rigs/executive-and-architecture"
|
||||
"canonicalUrl": "https://github.com/Heretek-AI/heretek-rigs/tree/99b4420c6a2e50749c8bb0b3a8d02186b9aa2b41/rigs/executive-and-architecture"
|
||||
},
|
||||
"configurationId": "delivery.git-drift-coord=pi,delivery.tech-docs-lead=pi,delivery.tpm-scrum-lead=pi,exec.exec-director=pi,exec.product-director=pi,exec.system-architect=pi",
|
||||
"packageDigest": {
|
||||
"algorithm": "sha256",
|
||||
"value": "0c4fa47e54804fa9cfb7939da466c09dcd438f2ea243d386e6776519873c4030",
|
||||
"value": "079592db2faa10d592dd0e20393fd86c9bb97bda7b4a5dc7c7d5d827135b8f71",
|
||||
"coverage": "openrig.package-digest/v1"
|
||||
},
|
||||
"assembler": {
|
||||
|
||||
@@ -5,14 +5,14 @@
|
||||
"source": {
|
||||
"repository": "https://github.com/Heretek-AI/heretek-rigs",
|
||||
"folder": "rigs/fullstack-and-web-studio",
|
||||
"resolvedCommit": "9ec0014ff44e7e174f6d7a5c74590de5f8fe664f",
|
||||
"resolvedCommit": "99b4420c6a2e50749c8bb0b3a8d02186b9aa2b41",
|
||||
"requestedRef": "main",
|
||||
"canonicalUrl": "https://github.com/Heretek-AI/heretek-rigs/tree/9ec0014ff44e7e174f6d7a5c74590de5f8fe664f/rigs/fullstack-and-web-studio"
|
||||
"canonicalUrl": "https://github.com/Heretek-AI/heretek-rigs/tree/99b4420c6a2e50749c8bb0b3a8d02186b9aa2b41/rigs/fullstack-and-web-studio"
|
||||
},
|
||||
"configurationId": "build.go-backend-eng=pi,build.java-kotlin-eng=pi,build.python-backend-spec=pi,build.ts-node-fullstack=pi,design.a11y-specialist=pi,design.brand-copy-spec=pi,design.design-system-eng=pi,design.fe-perf-eng=pi,design.mobile-web-eng=pi,design.ui-ux-designer=pi,design.ux-research-analyst=pi",
|
||||
"packageDigest": {
|
||||
"algorithm": "sha256",
|
||||
"value": "df5c93e32f21561bf94ebb2443f1fde50b8ed870fe7bac25b318ca92dd9faff4",
|
||||
"value": "8348cc1caaf255d3c0a0af3458387cf9d830f6afe3c5b03d20e7c7ba967303c7",
|
||||
"coverage": "openrig.package-digest/v1"
|
||||
},
|
||||
"assembler": {
|
||||
|
||||
@@ -5,14 +5,14 @@
|
||||
"source": {
|
||||
"repository": "https://github.com/Heretek-AI/heretek-rigs",
|
||||
"folder": "rigs/game-dev-and-sim-rig",
|
||||
"resolvedCommit": "9ec0014ff44e7e174f6d7a5c74590de5f8fe664f",
|
||||
"resolvedCommit": "99b4420c6a2e50749c8bb0b3a8d02186b9aa2b41",
|
||||
"requestedRef": "main",
|
||||
"canonicalUrl": "https://github.com/Heretek-AI/heretek-rigs/tree/9ec0014ff44e7e174f6d7a5c74590de5f8fe664f/rigs/game-dev-and-sim-rig"
|
||||
"canonicalUrl": "https://github.com/Heretek-AI/heretek-rigs/tree/99b4420c6a2e50749c8bb0b3a8d02186b9aa2b41/rigs/game-dev-and-sim-rig"
|
||||
},
|
||||
"configurationId": "engine.engine-systems-eng=pi,engine.graphics-shader-eng=pi,engine.physics-sim-eng=pi,gameplay.game-ai-dev=pi,gameplay.game-systems-dev=pi,gameplay.tech-artist-pipeline=pi",
|
||||
"packageDigest": {
|
||||
"algorithm": "sha256",
|
||||
"value": "c498513b47ad27e6f89b26133433feca1c014a3a5dd83817c6cf7f1353ae4b3f",
|
||||
"value": "ad5b75ae28b41b35d83d167e8d3c3fea4186c1d86fe8f6728b04dfa19cc93b8d",
|
||||
"coverage": "openrig.package-digest/v1"
|
||||
},
|
||||
"assembler": {
|
||||
|
||||
@@ -5,14 +5,14 @@
|
||||
"source": {
|
||||
"repository": "https://github.com/Heretek-AI/heretek-rigs",
|
||||
"folder": "rigs/heretek-omni-fleet",
|
||||
"resolvedCommit": "9ec0014ff44e7e174f6d7a5c74590de5f8fe664f",
|
||||
"resolvedCommit": "99b4420c6a2e50749c8bb0b3a8d02186b9aa2b41",
|
||||
"requestedRef": "main",
|
||||
"canonicalUrl": "https://github.com/Heretek-AI/heretek-rigs/tree/9ec0014ff44e7e174f6d7a5c74590de5f8fe664f/rigs/heretek-omni-fleet"
|
||||
"canonicalUrl": "https://github.com/Heretek-AI/heretek-rigs/tree/99b4420c6a2e50749c8bb0b3a8d02186b9aa2b41/rigs/heretek-omni-fleet"
|
||||
},
|
||||
"configurationId": "command.exec-director=pi,command.system-architect=pi,command.tpm-scrum-lead=pi",
|
||||
"packageDigest": {
|
||||
"algorithm": "sha256",
|
||||
"value": "d40547936a10a7a046e5974cdc035c414380a4760b17b8b540532a2c642f087c",
|
||||
"value": "c936ce5827cd38cd417c30b94b0e4a4e53e5168abb8843918e247f2773cfc3b0",
|
||||
"coverage": "openrig.package-digest/v1"
|
||||
},
|
||||
"assembler": {
|
||||
|
||||
@@ -5,14 +5,14 @@
|
||||
"source": {
|
||||
"repository": "https://github.com/Heretek-AI/heretek-rigs",
|
||||
"folder": "rigs/qa-and-verification-gauntlet",
|
||||
"resolvedCommit": "9ec0014ff44e7e174f6d7a5c74590de5f8fe664f",
|
||||
"resolvedCommit": "99b4420c6a2e50749c8bb0b3a8d02186b9aa2b41",
|
||||
"requestedRef": "main",
|
||||
"canonicalUrl": "https://github.com/Heretek-AI/heretek-rigs/tree/9ec0014ff44e7e174f6d7a5c74590de5f8fe664f/rigs/qa-and-verification-gauntlet"
|
||||
"canonicalUrl": "https://github.com/Heretek-AI/heretek-rigs/tree/99b4420c6a2e50749c8bb0b3a8d02186b9aa2b41/rigs/qa-and-verification-gauntlet"
|
||||
},
|
||||
"configurationId": "qa.api-contract-tester=pi,qa.e2e-browser-qa=pi,qa.load-stress-tester=pi,qa.release-qa-officer=pi,qa.sabotage-qa-tester=pi,qa.static-analysis-lead=pi",
|
||||
"packageDigest": {
|
||||
"algorithm": "sha256",
|
||||
"value": "1468bdb0659d597e3c18fd0bd2e0784057086472adfc746340f181aecf5b93ee",
|
||||
"value": "d2625b1da491c5632314c5e3d1403debc554bf54fa11a56f04eae8f6e5818ffa",
|
||||
"coverage": "openrig.package-digest/v1"
|
||||
},
|
||||
"assembler": {
|
||||
|
||||
@@ -5,14 +5,14 @@
|
||||
"source": {
|
||||
"repository": "https://github.com/Heretek-AI/heretek-rigs",
|
||||
"folder": "rigs/systems-and-mobile-foundry",
|
||||
"resolvedCommit": "9ec0014ff44e7e174f6d7a5c74590de5f8fe664f",
|
||||
"resolvedCommit": "99b4420c6a2e50749c8bb0b3a8d02186b9aa2b41",
|
||||
"requestedRef": "main",
|
||||
"canonicalUrl": "https://github.com/Heretek-AI/heretek-rigs/tree/9ec0014ff44e7e174f6d7a5c74590de5f8fe664f/rigs/systems-and-mobile-foundry"
|
||||
"canonicalUrl": "https://github.com/Heretek-AI/heretek-rigs/tree/99b4420c6a2e50749c8bb0b3a8d02186b9aa2b41/rigs/systems-and-mobile-foundry"
|
||||
},
|
||||
"configurationId": "mobile.android-mobile-spec=pi,mobile.ios-mobile-spec=pi,systems.cpp-lowlevel-eng=pi,systems.rust-systems-spec=pi",
|
||||
"packageDigest": {
|
||||
"algorithm": "sha256",
|
||||
"value": "0f9e97bfc580dc839da0ac92107880b8b5cd79ecb7d8711ff0a03a647e2a525d",
|
||||
"value": "f6cb83210cd2005473a6543e52b4e23405ea5a2ad678a0031ade31c289f48486",
|
||||
"coverage": "openrig.package-digest/v1"
|
||||
},
|
||||
"assembler": {
|
||||
|
||||
@@ -117,6 +117,8 @@ resources:
|
||||
path: skills/typescript-astro
|
||||
- id: using-git-worktrees
|
||||
path: skills/using-git-worktrees
|
||||
- id: using-superpowers
|
||||
path: skills/using-superpowers
|
||||
- id: variant-analysis
|
||||
path: skills/variant-analysis
|
||||
- id: verification-before-completion
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2025 Jesse Vincent
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
@@ -0,0 +1,65 @@
|
||||
---
|
||||
name: using-superpowers
|
||||
description: Use when starting any conversation - establishes how to find and use skills, requiring skill invocation before ANY response including clarifying questions
|
||||
---
|
||||
|
||||
<SUBAGENT-STOP>
|
||||
If you were dispatched as a subagent to execute a specific task, ignore this skill.
|
||||
</SUBAGENT-STOP>
|
||||
|
||||
<EXTREMELY-IMPORTANT>
|
||||
If you think there is even a 1% chance a skill might apply to what you are doing, you ABSOLUTELY MUST invoke the skill.
|
||||
|
||||
IF A SKILL APPLIES TO YOUR TASK, YOU DO NOT HAVE A CHOICE. YOU MUST USE IT.
|
||||
|
||||
This is not negotiable. You cannot rationalize your way out of this.
|
||||
</EXTREMELY-IMPORTANT>
|
||||
|
||||
## The Rule
|
||||
|
||||
**Invoke relevant or requested skills BEFORE any response or action** — including clarifying questions, exploring the codebase, or checking files. If it turns out wrong for the situation, you don't have to use it.
|
||||
|
||||
**Before entering plan mode:** if you haven't already brainstormed, invoke the brainstorming skill first.
|
||||
|
||||
Then announce "Using [skill] to [purpose]" and follow the skill exactly. If it has a checklist, create a todo per item.
|
||||
|
||||
## Skill Priority
|
||||
|
||||
When multiple skills apply, process skills come first — they set the approach, then implementation skills (frontend-design, etc.) carry it out. Brainstorming and systematic-debugging are Superpowers' most common process skills, but the rule holds for any of them.
|
||||
|
||||
- "Let's build X" → superpowers:brainstorming first, then implementation skills.
|
||||
- "Fix this bug" → superpowers:systematic-debugging first, then domain skills.
|
||||
|
||||
## Red Flags
|
||||
|
||||
These thoughts mean STOP—you're rationalizing:
|
||||
|
||||
| Thought | Reality |
|
||||
|---------|---------|
|
||||
| "This is just a simple question" | Questions are tasks. Check for skills. |
|
||||
| "I need more context first" | Skill check comes BEFORE clarifying questions. |
|
||||
| "Let me explore the codebase first" | Skills tell you HOW to explore. Check first. |
|
||||
| "I can check git/files quickly" | Files lack conversation context. Check for skills. |
|
||||
| "Let me gather information first" | Skills tell you HOW to gather information. |
|
||||
| "This doesn't need a formal skill" | If a skill exists, use it. |
|
||||
| "I remember this skill" | Skills evolve. Read current version. |
|
||||
| "This doesn't count as a task" | Action = task. Check for skills. |
|
||||
| "The skill is overkill" | Simple things become complex. Use it. |
|
||||
| "I'll just do this one thing first" | Check BEFORE doing anything. |
|
||||
| "This feels productive" | Undisciplined action wastes time. Skills prevent this. |
|
||||
| "I know what that means" | Knowing the concept ≠ using the skill. Invoke it. |
|
||||
|
||||
## Platform Adaptation
|
||||
|
||||
If your harness appears here, read its reference file for special instructions:
|
||||
|
||||
- Claude Code: `references/claude-code-tools.md`
|
||||
- Codex: `references/codex-tools.md`
|
||||
- Pi: `references/pi-tools.md`
|
||||
- Antigravity: `references/antigravity-tools.md`
|
||||
- Hermes Agent: `references/hermes-tools.md`
|
||||
- Muse: `references/muse-tools.md`
|
||||
|
||||
## User Instructions
|
||||
|
||||
User instructions (CLAUDE.md, AGENTS.md, GEMINI.md, etc, direct requests) take precedence over skills, which in turn override default behavior. Only skip skill workflows or instructions when your human partner has explicitly told you to.
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
# Antigravity CLI (`agy`) Tool Mapping
|
||||
|
||||
Skills speak in actions ("dispatch a subagent", "create a todo", "read a file"). On the Antigravity CLI (`agy`) these resolve to the tools below.
|
||||
|
||||
| Action skills request | Antigravity CLI equivalent |
|
||||
|----------------------|----------------------|
|
||||
| Dispatch a subagent (`Subagent (general-purpose):` template) | `invoke_subagent` with a built-in `TypeName` — `self` for full-capability work, `research` for read-only |
|
||||
| Task tracking ("create a todo", "mark complete") | a **task artifact** — `write_to_file` with `IsArtifact: true` and `ArtifactType: "task"` (see [Task tracking](#task-tracking)). **Not** `manage_task`, which manages background processes. |
|
||||
|
||||
## Task tracking
|
||||
|
||||
Antigravity has **no todo tool** (`manage_task` manages background
|
||||
processes — `list`/`kill`/`status`/`send_input` — it is *not* a checklist). When a
|
||||
skill says to create a todo list or track tasks, maintain a **task artifact**: a
|
||||
markdown checklist saved with `write_to_file` (`IsArtifact: true`,
|
||||
`ArtifactMetadata.ArtifactType: "task"`), edited with `replace_file_content` /
|
||||
`multi_replace_file_content` as you go.
|
||||
|
||||
At the start of any multi-step task, create the task artifact listing every step of
|
||||
your plan. As you complete each step, edit the artifact to mark it done (`- [x]`).
|
||||
If the plan changes, update the checklist. Keep it current — it is your source of
|
||||
truth for what remains; once the conversation gets long, re-read it before starting
|
||||
each step.
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
# Claude Code Tool Notes
|
||||
|
||||
Claude Code is the reference harness: skills speak its vocabulary
|
||||
(`Agent` for a subagent dispatch, todos, `Skill`). These notes cover the
|
||||
one place Claude Code can run a plan cheaper than the skills' default
|
||||
shape. It is opt-in by your human partner and changes nothing the skills
|
||||
require.
|
||||
|
||||
## Cheaper orchestration for subagent-driven development
|
||||
|
||||
The controller session is the most expensive seat in a
|
||||
superpowers:subagent-driven-development run: it reads every dispatch
|
||||
result and every report, and it usually runs on the session's most
|
||||
capable model. Claude Code supports nested subagents (three layers below
|
||||
the main conversation by default; `CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH`
|
||||
adjusts it), so the whole loop can run one layer down.
|
||||
|
||||
When your human partner asks for it — or has said the session model is
|
||||
too expensive to spend on coordination — dispatch ONE orchestrator
|
||||
subagent on a mid-tier model with the plan path and the instruction to
|
||||
use superpowers:subagent-driven-development end to end. The orchestrator
|
||||
dispatches its own implementers and reviewers per that skill's Model
|
||||
Selection; the workspace and ledger live on disk, so nothing is lost to
|
||||
the extra layer. Its final message must carry the "Rulings I made" list
|
||||
verbatim — that list is how the decisions reach your human partner, and
|
||||
you relay it, not summarize it.
|
||||
|
||||
Do this only for a whole plan. Nesting a single task's dispatch buys
|
||||
nothing and adds a seat.
|
||||
+108
@@ -0,0 +1,108 @@
|
||||
## Subagent dispatch requires multi-agent support
|
||||
|
||||
Add to your Codex config (`~/.codex/config.toml`):
|
||||
|
||||
```toml
|
||||
[features]
|
||||
multi_agent = true
|
||||
```
|
||||
|
||||
This enables the multi-agent tools that skills like
|
||||
`dispatching-parallel-agents` and `subagent-driven-development` use.
|
||||
Which tools you get depends on the multi-agent version your model
|
||||
preset selects (current presets run V2; older ones run V1). Trust your
|
||||
actual tool list over any table — including this one — when they
|
||||
disagree.
|
||||
|
||||
- **Spawning:** give children a clean context with
|
||||
`spawn_agent {fork_turns: "none"}`; the default `"all"` copies your
|
||||
entire transcript into the child. On Codex 0.145+, role files under
|
||||
`~/.codex/agents/` attach to isolated forks via `agent_type`.
|
||||
Full-history forks accept `model` and `reasoning_effort` overrides
|
||||
(only `agent_type` is refused there) — isolated forks are the SDD
|
||||
default for context hygiene, not because overrides require them.
|
||||
- **Fix rounds:** resume the implementer with `followup_task` — it
|
||||
delivers your message, triggers a turn, and transparently reloads a
|
||||
child the harness evicted. Never dispatch a fresh implementer on the
|
||||
theory that a spawned agent cannot be messaged again; on V2 it
|
||||
always can.
|
||||
- **Lifecycle:** V2 has no `close_agent`. Finished children are
|
||||
evicted automatically when slots are needed; leaving them unclosed
|
||||
costs nothing. Only V1 sessions have `close_agent` — there, close
|
||||
reviewers when their review returns, and close each implementer
|
||||
after its task's review passes.
|
||||
- **Model names:** never copy a model name from a skill, table, or old
|
||||
session into `spawn_agent` without checking it against your current
|
||||
spawn allowlist — V2 accepts only V2-capable presets and hard-errors
|
||||
on the rest.
|
||||
|
||||
## Waiting on children
|
||||
|
||||
`wait_agent` is an event subscription, not a poll: a long wait wakes
|
||||
the moment a child produces mailbox activity, with the same latency as
|
||||
a short one. Short-timeout polling buys nothing and costs a tool call —
|
||||
and a context rebill — per poll. In measured sessions, roughly
|
||||
two-thirds of all wait calls were short polls that timed out.
|
||||
|
||||
- While you still have local work, do not wait at all. A completed
|
||||
child's final answer is pushed into your mailbox and arrives with
|
||||
your next turn.
|
||||
- When you are genuinely idle with children outstanding, wait in
|
||||
bounded stretches: `wait_agent` with `timeout_ms` 300000-600000
|
||||
(5-10 minutes). After each stretch — wake or timeout — post one
|
||||
status line, run `list_agents`, and chase any child that finished
|
||||
without reporting. Never stack polls shorter than five minutes; the
|
||||
event subscription wakes a bounded stretch just as fast as a short
|
||||
one.
|
||||
- Completion mail cannot wake an idle controller (it is delivered
|
||||
without triggering a turn); covering that idle window is
|
||||
`wait_agent`'s only job. A stretch that times out with no activity
|
||||
is your cue to reconcile, not to shorten the next stretch.
|
||||
|
||||
## Model routing on spawns
|
||||
|
||||
Every `spawn_agent` you issue — including when you are yourself a
|
||||
spawned child running a fan-out — sets `model` AND `reasoning_effort`
|
||||
explicitly, per the Model Selection rules of the skill you are
|
||||
executing. Setting `model` alone is a trap: the child's effort
|
||||
silently resets to that model's default, not to yours.
|
||||
|
||||
Ask your human partner to add a machine-level backstop to
|
||||
`~/.codex/config.toml` so any spawn that slips through still routes to
|
||||
a deliberate tier instead of silently inheriting the session's most
|
||||
expensive model:
|
||||
|
||||
```toml
|
||||
[agents]
|
||||
default_subagent_model = "<a mid-tier model from your spawn allowlist>"
|
||||
default_subagent_reasoning_effort = "medium"
|
||||
```
|
||||
|
||||
## Environment Detection
|
||||
|
||||
Skills that create worktrees or finish branches should detect their
|
||||
environment with read-only git commands before proceeding:
|
||||
|
||||
```bash
|
||||
GIT_DIR=$(cd "$(git rev-parse --git-dir)" 2>/dev/null && pwd -P)
|
||||
GIT_COMMON=$(cd "$(git rev-parse --git-common-dir)" 2>/dev/null && pwd -P)
|
||||
BRANCH=$(git branch --show-current)
|
||||
```
|
||||
|
||||
- `GIT_DIR != GIT_COMMON` → already in a linked worktree (skip creation)
|
||||
- `BRANCH` empty → detached HEAD (cannot branch/push/PR from sandbox)
|
||||
|
||||
See `using-git-worktrees` Step 0 and `finishing-a-development-branch`
|
||||
Step 1 for how each skill uses these signals.
|
||||
|
||||
## Codex App Finishing
|
||||
|
||||
When the sandbox blocks branch/push operations (detached HEAD in an
|
||||
externally managed worktree), the agent commits all work and informs
|
||||
the user to use the App's native controls:
|
||||
|
||||
- **"Create branch"** — names the branch, then commit/push/PR via App UI
|
||||
- **"Hand off to local"** — transfers work to the user's local checkout
|
||||
|
||||
The agent can still run tests, stage files, and output suggested branch
|
||||
names, commit messages, and PR descriptions for the user to copy.
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
# Gemini CLI Tool Mapping
|
||||
|
||||
Skills speak in actions ("dispatch a subagent", "create a todo", "read a file"). On Gemini CLI these resolve to the tools below.
|
||||
|
||||
| Action skills request | Gemini CLI equivalent |
|
||||
|----------------------|----------------------|
|
||||
| Read a file | `read_file` |
|
||||
| Read multiple files at once | `read_many_files` |
|
||||
| Create a new file | `write_file` |
|
||||
| Edit a file | `replace` |
|
||||
| Run a shell command | `run_shell_command` |
|
||||
| Search file contents | `grep_search` |
|
||||
| Find files by name | `glob` |
|
||||
| List files and subdirectories | `list_directory` |
|
||||
| Fetch a URL | `web_fetch` |
|
||||
| Search the web | `google_web_search` |
|
||||
| Invoke a skill | `activate_skill` |
|
||||
| Dispatch a subagent (`Subagent (general-purpose):` template) | `invoke_agent` with `agent_name: "generalist"` (invocable via `@generalist` chat syntax — see [Subagent support](#subagent-support)) |
|
||||
| Multiple parallel dispatches | Multiple `invoke_agent` calls in the same response |
|
||||
| Task tracking ("create a todo", "mark complete") | `write_todos` (statuses: pending, in_progress, completed, cancelled, blocked) |
|
||||
|
||||
## Instructions file
|
||||
|
||||
When a skill mentions "your instructions file", on Gemini CLI this is **`GEMINI.md`**. Gemini CLI loads `GEMINI.md` hierarchically: global at `~/.gemini/GEMINI.md`, project-level files in workspace directories and their ancestors, and sub-directory `GEMINI.md` files when a tool accesses files in those directories.
|
||||
|
||||
## Personal skills directory
|
||||
|
||||
User-level skills live at **`~/.gemini/skills/`**, with **`~/.agents/skills/`** as a cross-runtime alias (shared with Codex and Copilot CLI). When both directories exist at the same scope, `.agents/skills/` takes precedence. Each skill is a subdirectory containing a `SKILL.md` (with `name` and `description` frontmatter).
|
||||
|
||||
## Subagent support
|
||||
|
||||
Gemini CLI dispatches subagents through the `invoke_agent` tool, which takes `agent_name` and `prompt` parameters. The same dispatch is also surfaced as a chat-syntax shortcut: typing `@generalist <prompt>` is equivalent to calling `invoke_agent` with `agent_name: "generalist"`. Built-in agent names include `generalist`, `cli_help`, `codebase_investigator`, and (with browser tooling enabled) `browser_agent`.
|
||||
|
||||
Skills dispatch with `Subagent (general-purpose):` and either reference a prompt-template file (e.g., `superpowers:subagent-driven-development`'s `./implementer-prompt.md`) or supply an inline prompt. On Gemini CLI:
|
||||
|
||||
| Skill dispatch form | Gemini CLI equivalent |
|
||||
|---------------------|----------------------|
|
||||
| References a `*-prompt.md` template (implementer, task-reviewer, code-reviewer, etc.) | Fill the template, then `invoke_agent` with `agent_name: "generalist"` and the filled prompt |
|
||||
| References `superpowers:requesting-code-review`'s `./code-reviewer.md` | `invoke_agent` with `agent_name: "generalist"` and the filled review template |
|
||||
| Inline prompt (no template referenced) | `invoke_agent` with `agent_name: "generalist"` and your inline prompt |
|
||||
|
||||
### Prompt filling
|
||||
|
||||
Skills provide prompt templates with placeholders like `{WHAT_WAS_IMPLEMENTED}` or `[FULL TEXT of task]`. Fill all placeholders before passing the complete prompt to `invoke_agent`. The prompt template itself contains the agent's role, review criteria, and expected output format — the subagent will follow it.
|
||||
|
||||
### Parallel dispatch
|
||||
|
||||
Gemini CLI supports parallel subagent dispatch. Issue multiple `invoke_agent` calls in the same response (or multiple `@generalist` invocations in one prompt) to run independent subagent work in parallel. Keep dependent tasks sequential, but do not serialize independent subagent tasks just to preserve a simpler history.
|
||||
|
||||
## Additional Gemini CLI tools
|
||||
|
||||
These tools are unique to Gemini CLI:
|
||||
|
||||
| Tool | Purpose |
|
||||
|------|---------|
|
||||
| `save_memory` (legacy) | Persist facts across sessions when `experimental.memoryV2 = false` |
|
||||
| `get_internal_docs` | Look up Gemini CLI's bundled documentation |
|
||||
| `ask_user` | Pose structured questions to the user (text / single-select / multi-select) |
|
||||
| `enter_plan_mode` / `exit_plan_mode` | Switch into and out of read-only plan mode |
|
||||
| `update_topic` | Update the current conversation's topic / strategic-intent metadata |
|
||||
| `complete_task` | Signal that a Gemini subagent has completed and return its result to the parent agent |
|
||||
| `tracker_create_task`, `tracker_update_task`, `tracker_get_task`, `tracker_list_tasks`, `tracker_add_dependency`, `tracker_visualize` | Rich task tracker with dependency and visualization support |
|
||||
| `read_mcp_resource`, `list_mcp_resources` | MCP resource access |
|
||||
+56
@@ -0,0 +1,56 @@
|
||||
# Hermes Agent Tool Mapping
|
||||
|
||||
Skills speak in actions ("dispatch a subagent", "create a todo", "read a file"). On Hermes Agent these resolve to the tools below.
|
||||
|
||||
## Tools
|
||||
|
||||
| Action skills request | Hermes tool |
|
||||
|---|---|
|
||||
| Read a file | `read_file` |
|
||||
| Create a new file | `write_file` |
|
||||
| Edit a file (targeted patch) | `patch` |
|
||||
| Run a shell command | `terminal` |
|
||||
| Search file contents | `search_files` |
|
||||
| Find files by name | `terminal` with `find` |
|
||||
| Fetch a URL / read a webpage | `web_extract(urls=[...])` |
|
||||
| Search the web | `web_search(query=...)` |
|
||||
| Dispatch a subagent | `delegate_task(goal=..., context=..., toolsets=[...], role="leaf")` |
|
||||
| Task tracking | `todo` tool |
|
||||
| Invoke a skill | `skill_view("skill-name")` |
|
||||
|
||||
## Instructions file
|
||||
|
||||
When a skill mentions "your instructions file," on Hermes Agent this is **`AGENTS.md`** in the project directory, or **`SOUL.md`** globally at `~/.hermes/SOUL.md`.
|
||||
|
||||
## Invoking a skill
|
||||
|
||||
Hermes Agent has a `skills` toolset with `skill_view` and `skills_list` tools.
|
||||
To invoke a superpowers skill, use:
|
||||
|
||||
```
|
||||
skill_view("brainstorming")
|
||||
skill_view("test-driven-development")
|
||||
```
|
||||
|
||||
If `skill_view` cannot find a superpowers skill (it may not appear in the catalog
|
||||
until the plugin fully registers it), fall back to reading the SKILL.md directly:
|
||||
|
||||
```
|
||||
read_file(path="~/.hermes/plugins/superpowers/skills/<skill-name>/SKILL.md")
|
||||
```
|
||||
|
||||
This fallback is the same mechanism used by other harnesses without native skill loading.
|
||||
|
||||
## Subagent dispatch
|
||||
|
||||
Use `delegate_task` to spawn isolated subagents for parallel or sequential workstreams:
|
||||
|
||||
```
|
||||
delegate_task(goal="...", context="...", toolsets=[...], role="leaf")
|
||||
```
|
||||
|
||||
If `delegate_task` is unavailable, do the work inline rather than inventing tool calls.
|
||||
|
||||
## Task tracking
|
||||
|
||||
Use the `todo` tool for task tracking within a session. For multi-agent task boards, use `hermes kanban` CLI if available. Treat older `TodoWrite` references as the task-tracking action.
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
# Muse Tool Mapping
|
||||
|
||||
Skills speak in actions ("dispatch a subagent", "create a todo", "read a file"). On Muse these resolve to the tools below.
|
||||
|
||||
| Action skills request | Muse equivalent |
|
||||
|----------------------|----------------|
|
||||
| Read a file | `read_file` |
|
||||
| Read multiple files | `read_file` (call multiple times) or `search` |
|
||||
| Create a new file | `write_file` |
|
||||
| Edit a file | `edit_file` |
|
||||
| Run a shell command | `bash` |
|
||||
| Search file contents | `search` |
|
||||
| Find files by name | `search` with `glob` |
|
||||
| Fetch a URL | `web_fetch` |
|
||||
| Search the web | `web_search` |
|
||||
| Invoke a skill | `read_file` on `skills/<name>/SKILL.md` or native skill tool |
|
||||
| Dispatch a subagent (`Subagent (general-purpose):` template) | `subagent_spawn` with prompt filling |
|
||||
| Task tracking ("create a todo", "mark complete") | `write_todos` or `bash` task file |
|
||||
| Ask the user a question | `request_user_input` |
|
||||
|
||||
## Instructions file
|
||||
|
||||
When a skill mentions "your instructions file", on Muse this is **`CLAUDE.md`** or **`AGENTS.md`** in the project root. Muse loads these hierarchically where configured.
|
||||
|
||||
## Skill invocation
|
||||
|
||||
Muse has native skill support via `muse skills`. To invoke a Superpowers skill, read its `SKILL.md` and follow the instructions. The bootstrap (`using-superpowers`) is injected automatically at `SessionStart` via the plugin hook — you are already following it, do not re-load it.
|
||||
|
||||
## Subagent dispatch
|
||||
|
||||
Use `subagent_spawn` to delegate work to isolated subagents. Fill prompt templates (e.g., `implementer-prompt.md`, `task-reviewer-prompt.md`) before dispatching. If no subagent tool is available, do the work inline rather than inventing tool calls.
|
||||
|
||||
## Task tracking
|
||||
|
||||
Use `write_todos` for checklist tracking. Create one todo per skill checklist item, mark in_progress/completed as you go. If `write_todos` is unavailable, maintain a markdown task file via `write_file`/`edit_file`.
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
# Pi Tool Mapping
|
||||
|
||||
Skills speak in actions ("dispatch a subagent", "create a todo", "read a file"). On Pi these resolve to the tools below.
|
||||
|
||||
| Action skills request | Pi equivalent |
|
||||
| --- | --- |
|
||||
| Dispatch a subagent (`Subagent (general-purpose):` template) | Use an installed subagent tool such as `subagent` from `pi-subagents` if available |
|
||||
| Task tracking ("create a todo", "mark complete") | Use an installed todo/task tool if available, otherwise track tasks in the plan or `TODO.md` |
|
||||
|
||||
## Subagents
|
||||
|
||||
Pi core does not ship a standard subagent tool. The `pi-subagents` package is a strong optional companion and provides a `subagent` tool with single-agent, chain, parallel, async, forked-context, and resume/status workflows. If no subagent tool is available, do not fabricate `Task` calls; execute sequentially in the current session or explain that the optional subagent capability is not installed.
|
||||
|
||||
## Task lists
|
||||
|
||||
Pi core does not ship a standard task-list tool. If a todo/task extension is installed, use its documented tool. Otherwise use Superpowers plan files, checklists in Markdown, or a repo-local `TODO.md` for task tracking. Older Superpowers docs may refer to `TodoWrite`; treat that as the task-tracking action above.
|
||||
+1
@@ -36,6 +36,7 @@
|
||||
"*(*": "deny",
|
||||
"*)*": "deny",
|
||||
"* -p*": "deny",
|
||||
"*\t-p*": "deny",
|
||||
"*--patch*": "deny",
|
||||
"*--full-diff*": "deny",
|
||||
"*--textconv*": "deny"
|
||||
|
||||
+1
@@ -43,6 +43,7 @@
|
||||
"*(*": "deny",
|
||||
"*)*": "deny",
|
||||
"* -p*": "deny",
|
||||
"*\t-p*": "deny",
|
||||
"*--patch*": "deny",
|
||||
"*--full-diff*": "deny",
|
||||
"*--textconv*": "deny"
|
||||
|
||||
+1
@@ -36,6 +36,7 @@
|
||||
"*(*": "deny",
|
||||
"*)*": "deny",
|
||||
"* -p*": "deny",
|
||||
"*\t-p*": "deny",
|
||||
"*--patch*": "deny",
|
||||
"*--full-diff*": "deny",
|
||||
"*--textconv*": "deny"
|
||||
|
||||
+1
@@ -43,6 +43,7 @@
|
||||
"*(*": "deny",
|
||||
"*)*": "deny",
|
||||
"* -p*": "deny",
|
||||
"*\t-p*": "deny",
|
||||
"*--patch*": "deny",
|
||||
"*--full-diff*": "deny",
|
||||
"*--textconv*": "deny"
|
||||
|
||||
+1
@@ -40,6 +40,7 @@
|
||||
"*(*": "deny",
|
||||
"*)*": "deny",
|
||||
"* -p*": "deny",
|
||||
"*\t-p*": "deny",
|
||||
"*--patch*": "deny",
|
||||
"*--full-diff*": "deny",
|
||||
"*--textconv*": "deny"
|
||||
|
||||
+1
@@ -47,6 +47,7 @@
|
||||
"*(*": "deny",
|
||||
"*)*": "deny",
|
||||
"* -p*": "deny",
|
||||
"*\t-p*": "deny",
|
||||
"*--patch*": "deny",
|
||||
"*--full-diff*": "deny",
|
||||
"*--textconv*": "deny"
|
||||
|
||||
+1
@@ -39,6 +39,7 @@
|
||||
"*(*": "deny",
|
||||
"*)*": "deny",
|
||||
"* -p*": "deny",
|
||||
"*\t-p*": "deny",
|
||||
"*--patch*": "deny",
|
||||
"*--full-diff*": "deny",
|
||||
"*--textconv*": "deny"
|
||||
|
||||
+1
@@ -46,6 +46,7 @@
|
||||
"*(*": "deny",
|
||||
"*)*": "deny",
|
||||
"* -p*": "deny",
|
||||
"*\t-p*": "deny",
|
||||
"*--patch*": "deny",
|
||||
"*--full-diff*": "deny",
|
||||
"*--textconv*": "deny"
|
||||
|
||||
+1
@@ -36,6 +36,7 @@
|
||||
"*(*": "deny",
|
||||
"*)*": "deny",
|
||||
"* -p*": "deny",
|
||||
"*\t-p*": "deny",
|
||||
"*--patch*": "deny",
|
||||
"*--full-diff*": "deny",
|
||||
"*--textconv*": "deny"
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
"*(*": "deny",
|
||||
"*)*": "deny",
|
||||
"* -p*": "deny",
|
||||
"*\t-p*": "deny",
|
||||
"*--patch*": "deny",
|
||||
"*--full-diff*": "deny",
|
||||
"*--textconv*": "deny"
|
||||
|
||||
+1
@@ -58,6 +58,7 @@
|
||||
"*(*": "deny",
|
||||
"*)*": "deny",
|
||||
"* -p*": "deny",
|
||||
"*\t-p*": "deny",
|
||||
"*--patch*": "deny",
|
||||
"*--full-diff*": "deny",
|
||||
"*--textconv*": "deny"
|
||||
|
||||
+1
@@ -67,6 +67,7 @@
|
||||
"*(*": "deny",
|
||||
"*)*": "deny",
|
||||
"* -p*": "deny",
|
||||
"*\t-p*": "deny",
|
||||
"*--patch*": "deny",
|
||||
"*--full-diff*": "deny",
|
||||
"*--textconv*": "deny"
|
||||
|
||||
+1
@@ -40,6 +40,7 @@
|
||||
"*(*": "deny",
|
||||
"*)*": "deny",
|
||||
"* -p*": "deny",
|
||||
"*\t-p*": "deny",
|
||||
"*--patch*": "deny",
|
||||
"*--full-diff*": "deny",
|
||||
"*--textconv*": "deny"
|
||||
|
||||
+1
@@ -47,6 +47,7 @@
|
||||
"*(*": "deny",
|
||||
"*)*": "deny",
|
||||
"* -p*": "deny",
|
||||
"*\t-p*": "deny",
|
||||
"*--patch*": "deny",
|
||||
"*--full-diff*": "deny",
|
||||
"*--textconv*": "deny"
|
||||
|
||||
+1
@@ -36,6 +36,7 @@
|
||||
"*(*": "deny",
|
||||
"*)*": "deny",
|
||||
"* -p*": "deny",
|
||||
"*\t-p*": "deny",
|
||||
"*--patch*": "deny",
|
||||
"*--full-diff*": "deny",
|
||||
"*--textconv*": "deny"
|
||||
|
||||
+1
@@ -43,6 +43,7 @@
|
||||
"*(*": "deny",
|
||||
"*)*": "deny",
|
||||
"* -p*": "deny",
|
||||
"*\t-p*": "deny",
|
||||
"*--patch*": "deny",
|
||||
"*--full-diff*": "deny",
|
||||
"*--textconv*": "deny"
|
||||
|
||||
+1
@@ -38,6 +38,7 @@
|
||||
"*(*": "deny",
|
||||
"*)*": "deny",
|
||||
"* -p*": "deny",
|
||||
"*\t-p*": "deny",
|
||||
"*--patch*": "deny",
|
||||
"*--full-diff*": "deny",
|
||||
"*--textconv*": "deny"
|
||||
|
||||
+1
@@ -45,6 +45,7 @@
|
||||
"*(*": "deny",
|
||||
"*)*": "deny",
|
||||
"* -p*": "deny",
|
||||
"*\t-p*": "deny",
|
||||
"*--patch*": "deny",
|
||||
"*--full-diff*": "deny",
|
||||
"*--textconv*": "deny"
|
||||
|
||||
+1
@@ -36,6 +36,7 @@
|
||||
"*(*": "deny",
|
||||
"*)*": "deny",
|
||||
"* -p*": "deny",
|
||||
"*\t-p*": "deny",
|
||||
"*--patch*": "deny",
|
||||
"*--full-diff*": "deny",
|
||||
"*--textconv*": "deny"
|
||||
|
||||
+1
@@ -43,6 +43,7 @@
|
||||
"*(*": "deny",
|
||||
"*)*": "deny",
|
||||
"* -p*": "deny",
|
||||
"*\t-p*": "deny",
|
||||
"*--patch*": "deny",
|
||||
"*--full-diff*": "deny",
|
||||
"*--textconv*": "deny"
|
||||
|
||||
+1
@@ -37,6 +37,7 @@
|
||||
"*(*": "deny",
|
||||
"*)*": "deny",
|
||||
"* -p*": "deny",
|
||||
"*\t-p*": "deny",
|
||||
"*--patch*": "deny",
|
||||
"*--full-diff*": "deny",
|
||||
"*--textconv*": "deny"
|
||||
|
||||
+1
@@ -44,6 +44,7 @@
|
||||
"*(*": "deny",
|
||||
"*)*": "deny",
|
||||
"* -p*": "deny",
|
||||
"*\t-p*": "deny",
|
||||
"*--patch*": "deny",
|
||||
"*--full-diff*": "deny",
|
||||
"*--textconv*": "deny"
|
||||
|
||||
@@ -28,7 +28,7 @@ agents:
|
||||
version: '1.0'
|
||||
path: agents/_shared
|
||||
original_ref: local:../_shared
|
||||
hash: 954498133668f5209742225f02a415b2c0d478a521220ab3ec4aeb2d9c261c50
|
||||
hash: a0e0af955e71c9481c53f81203e673192105d327f903de5337f6dc8efbbf13ca
|
||||
- name: k8s-orchestrator
|
||||
version: '1.0'
|
||||
path: agents/k8s-orchestrator
|
||||
@@ -39,7 +39,7 @@ agents:
|
||||
version: '1.0'
|
||||
path: agents/_shared
|
||||
original_ref: local:../_shared
|
||||
hash: 954498133668f5209742225f02a415b2c0d478a521220ab3ec4aeb2d9c261c50
|
||||
hash: a0e0af955e71c9481c53f81203e673192105d327f903de5337f6dc8efbbf13ca
|
||||
- name: dependency-patcher
|
||||
version: '1.0'
|
||||
path: agents/dependency-patcher
|
||||
@@ -50,7 +50,7 @@ agents:
|
||||
version: '1.0'
|
||||
path: agents/_shared
|
||||
original_ref: local:../_shared
|
||||
hash: 954498133668f5209742225f02a415b2c0d478a521220ab3ec4aeb2d9c261c50
|
||||
hash: a0e0af955e71c9481c53f81203e673192105d327f903de5337f6dc8efbbf13ca
|
||||
- name: sre-incident-eng
|
||||
version: '1.0'
|
||||
path: agents/sre-incident-eng
|
||||
@@ -61,7 +61,7 @@ agents:
|
||||
version: '1.0'
|
||||
path: agents/_shared
|
||||
original_ref: local:../_shared
|
||||
hash: 954498133668f5209742225f02a415b2c0d478a521220ab3ec4aeb2d9c261c50
|
||||
hash: a0e0af955e71c9481c53f81203e673192105d327f903de5337f6dc8efbbf13ca
|
||||
- name: observability-eng
|
||||
version: '1.0'
|
||||
path: agents/observability-eng
|
||||
@@ -72,7 +72,7 @@ agents:
|
||||
version: '1.0'
|
||||
path: agents/_shared
|
||||
original_ref: local:../_shared
|
||||
hash: 954498133668f5209742225f02a415b2c0d478a521220ab3ec4aeb2d9c261c50
|
||||
hash: a0e0af955e71c9481c53f81203e673192105d327f903de5337f6dc8efbbf13ca
|
||||
- name: dba-specialist
|
||||
version: '1.0'
|
||||
path: agents/dba-specialist
|
||||
@@ -83,7 +83,7 @@ agents:
|
||||
version: '1.0'
|
||||
path: agents/_shared
|
||||
original_ref: local:../_shared
|
||||
hash: 954498133668f5209742225f02a415b2c0d478a521220ab3ec4aeb2d9c261c50
|
||||
hash: a0e0af955e71c9481c53f81203e673192105d327f903de5337f6dc8efbbf13ca
|
||||
- name: cache-streaming-eng
|
||||
version: '1.0'
|
||||
path: agents/cache-streaming-eng
|
||||
@@ -94,7 +94,7 @@ agents:
|
||||
version: '1.0'
|
||||
path: agents/_shared
|
||||
original_ref: local:../_shared
|
||||
hash: 954498133668f5209742225f02a415b2c0d478a521220ab3ec4aeb2d9c261c50
|
||||
hash: a0e0af955e71c9481c53f81203e673192105d327f903de5337f6dc8efbbf13ca
|
||||
- name: data-pipeline-eng
|
||||
version: '1.0'
|
||||
path: agents/data-pipeline-eng
|
||||
@@ -105,7 +105,7 @@ agents:
|
||||
version: '1.0'
|
||||
path: agents/_shared
|
||||
original_ref: local:../_shared
|
||||
hash: 954498133668f5209742225f02a415b2c0d478a521220ab3ec4aeb2d9c261c50
|
||||
hash: a0e0af955e71c9481c53f81203e673192105d327f903de5337f6dc8efbbf13ca
|
||||
- name: analytics-metrics-eng
|
||||
version: '1.0'
|
||||
path: agents/analytics-metrics-eng
|
||||
@@ -116,7 +116,7 @@ agents:
|
||||
version: '1.0'
|
||||
path: agents/_shared
|
||||
original_ref: local:../_shared
|
||||
hash: 954498133668f5209742225f02a415b2c0d478a521220ab3ec4aeb2d9c261c50
|
||||
hash: a0e0af955e71c9481c53f81203e673192105d327f903de5337f6dc8efbbf13ca
|
||||
- name: mlops-serving-eng
|
||||
version: '1.0'
|
||||
path: agents/mlops-serving-eng
|
||||
@@ -127,7 +127,7 @@ agents:
|
||||
version: '1.0'
|
||||
path: agents/_shared
|
||||
original_ref: local:../_shared
|
||||
hash: 954498133668f5209742225f02a415b2c0d478a521220ab3ec4aeb2d9c261c50
|
||||
hash: a0e0af955e71c9481c53f81203e673192105d327f903de5337f6dc8efbbf13ca
|
||||
- name: vector-rag-spec
|
||||
version: '1.0'
|
||||
path: agents/vector-rag-spec
|
||||
@@ -138,14 +138,14 @@ agents:
|
||||
version: '1.0'
|
||||
path: agents/_shared
|
||||
original_ref: local:../_shared
|
||||
hash: 954498133668f5209742225f02a415b2c0d478a521220ab3ec4aeb2d9c261c50
|
||||
hash: a0e0af955e71c9481c53f81203e673192105d327f903de5337f6dc8efbbf13ca
|
||||
integrity:
|
||||
algorithm: sha256
|
||||
files:
|
||||
CULTURE.md: 138469da9119bebdc81c706e748d38989504a0b2f281619470763b81c492c833
|
||||
README.md: c4170fbe8e1f862882fc672c05c194861789e63221bc0465e9a70ba0e91ef97a
|
||||
SETUP.md: a01048df4f1b0a0d68cc0c8349ad32d8b970676b8acc83851f8efc7f1adb3e6a
|
||||
agents/_shared/agent.yaml: 954498133668f5209742225f02a415b2c0d478a521220ab3ec4aeb2d9c261c50
|
||||
agents/_shared/agent.yaml: a0e0af955e71c9481c53f81203e673192105d327f903de5337f6dc8efbbf13ca
|
||||
agents/_shared/skills/address-sanitizer/LICENSE: 7abe19ec9bb73b36141b999b861d24ad855e808bafe0f81e84cce28556f6c297
|
||||
agents/_shared/skills/address-sanitizer/SKILL.md: eb9ea8210fa55d50477fbe52993a704e320c88739c10d619864b6ce377ebce25
|
||||
agents/_shared/skills/address-sanitizer/agents/openai.yaml: cbad1378f4912a71dec8c1c9307b806f787c559e751a5fd1926028f1c0c2e7b5
|
||||
@@ -553,6 +553,15 @@ integrity:
|
||||
agents/_shared/skills/typescript-astro/SKILL.md: 6db8903dc14702a1cfde72da1ea5d00c2ed799aba8f71c125a8ab1bc46948bc7
|
||||
agents/_shared/skills/using-git-worktrees/LICENSE: a37e0e9697144819e1d965176ac4ae5bc3fa02d11e7812036bbcadf6dafe2400
|
||||
agents/_shared/skills/using-git-worktrees/SKILL.md: 8cfb86f121269e8f7f12361e6795c4f6738828340e28964c9229d365666c9edd
|
||||
agents/_shared/skills/using-superpowers/LICENSE: a37e0e9697144819e1d965176ac4ae5bc3fa02d11e7812036bbcadf6dafe2400
|
||||
agents/_shared/skills/using-superpowers/SKILL.md: 82c5c8866ad7f5dd4440ce66bd7806ba48a2f13771beae5cf112e53f08fe36ba
|
||||
agents/_shared/skills/using-superpowers/references/antigravity-tools.md: 4880f6de3da4e32f9659ebe7a72b9e0ebfff04e028c2ed96173f86d0387a04c0
|
||||
agents/_shared/skills/using-superpowers/references/claude-code-tools.md: 21479a3fee27448cab8748a3b5687e53bb257883bda9c070426f9a1ab5cebf1b
|
||||
agents/_shared/skills/using-superpowers/references/codex-tools.md: 1a38ad9b188c393052f58d95657a1c35ea6aafc8b5a27f198f3922912f70bbe7
|
||||
agents/_shared/skills/using-superpowers/references/gemini-tools.md: 62b9157bcb0ee3c6784e3d0da0798ddfa5872f9e0c34bea48f3079dabea71965
|
||||
agents/_shared/skills/using-superpowers/references/hermes-tools.md: e2185c976a3c87503910e05e2aea58cc89bc8e569bb624b93df9958ac47a9190
|
||||
agents/_shared/skills/using-superpowers/references/muse-tools.md: 5a1da5c575fe18456ca71cd47ebfd8a38c745f8d82a67fe64d5b83080000eeb3
|
||||
agents/_shared/skills/using-superpowers/references/pi-tools.md: 703dbc83d23ecab9c6f388460c38abc482e9dee2fe6772a8c7a255152ad3a4d5
|
||||
agents/_shared/skills/variant-analysis/LICENSE: 7abe19ec9bb73b36141b999b861d24ad855e808bafe0f81e84cce28556f6c297
|
||||
agents/_shared/skills/variant-analysis/SKILL.md: 7b6b78e499bcb88d05c68254ffc91ebc28edabf4e9808adcc40e2628ebb9407e
|
||||
agents/_shared/skills/variant-analysis/agents/openai.yaml: 6d6b67250ba8300e79491ac12e73262f54f2bf50776276fd04607ae4e3006fde
|
||||
@@ -609,89 +618,89 @@ integrity:
|
||||
agents/analytics-metrics-eng/agent.yaml: 338adde4b99a5f094ea6123553173a83d4966bbf9fc15c9be193c4403ebe1e47
|
||||
agents/analytics-metrics-eng/guidance/role.md: 2b118ec3cbc30a56e8d84b4f231c244526ed2a273f0c74c89f9c5ef6f2950758
|
||||
agents/analytics-metrics-eng/runtime/mcp.json: dcc25e47c4334888a8aaf9a0a702aeba095b16d62f8937b9e51458dc812d84ef
|
||||
agents/analytics-metrics-eng/runtime/pi-permission-config.json: eec9a554e77750b535d0b5387aeaaad5b61b68ff6fa390789a6536f530d30781
|
||||
agents/analytics-metrics-eng/runtime/pi-permission-config.json: c36775ca09c3cb77a90bde56d89604f54dcd5b31a9de876d85ad6dee040cabd7
|
||||
agents/analytics-metrics-eng/runtime/pi-settings.json: 56d9cda1f64c99524b01561abd9db68e1ded823962fac7b79cf957c7fe7922be
|
||||
agents/analytics-metrics-eng/runtime/policy-enforcement.json: 01ef42e2ccffb5bf3dcf045c46c317fe4d9c05d98b611cb90b2c34ef1b91cd9f
|
||||
agents/analytics-metrics-eng/runtime/policy-enforcement.json: 7ea5aca90cb91504b889ade73862a3ba509f5e1d2b4c0efaf5f5e0f890714df1
|
||||
agents/analytics-metrics-eng/skills/clickhouse-schema-and-aggregation-optimization/SKILL.md: d142343caf7ef2934478aa944e4182dd839045eda94906f82c7149da09952623
|
||||
agents/analytics-metrics-eng/startup/context.md: c038545136b1c2d0323110d81df16b872a3f8fb96a8aa1cd713bf9f69c1a0983
|
||||
agents/cache-streaming-eng/agent.yaml: 766985ab267a8204fb0a7526f2791586ca134503a082495fc9a8d44b9b3fcad8
|
||||
agents/cache-streaming-eng/guidance/role.md: 14e2f8f53fd61cb2de791bbf1727f7631b747a5458d1e8c1009ceaaa1182bf76
|
||||
agents/cache-streaming-eng/runtime/mcp.json: 3592e3c862e24b45c5d79130fca0e85fec96c062b4ad5ead8bb71e7b5e6cc95d
|
||||
agents/cache-streaming-eng/runtime/pi-permission-config.json: 8b864657c9b49b9de158289222a05a6641861a63658849c261d95151d72f46f4
|
||||
agents/cache-streaming-eng/runtime/pi-permission-config.json: 690af98989cef7d399437e91f7ddc6b9c5479247621963c0069ca757aab142ec
|
||||
agents/cache-streaming-eng/runtime/pi-settings.json: 56d9cda1f64c99524b01561abd9db68e1ded823962fac7b79cf957c7fe7922be
|
||||
agents/cache-streaming-eng/runtime/policy-enforcement.json: 4d889e396db05bec6b97602ab738defa814decbaa69c80f056c08700d370fd00
|
||||
agents/cache-streaming-eng/runtime/policy-enforcement.json: 88f956347c9f5407c5cc4763482a4668e8b2626a6e330ebccc28e1bc6ab37831
|
||||
agents/cache-streaming-eng/skills/kafka-topic-and-consumer-tuning/SKILL.md: b5ceab25d16e6718ca37f7b2e2b25c840d40a4e230c76a882afc3dda6b014dba
|
||||
agents/cache-streaming-eng/startup/context.md: 7a748372d89d05ef6c51279ea1c8b847091eb1ceeda55d7995b94dbd1af8b993
|
||||
agents/cloud-platform-eng/agent.yaml: b7f324934f48248a33ba30bb5145f597bf40136c82058acd1ba2e6a0eea7dd3b
|
||||
agents/cloud-platform-eng/guidance/role.md: 69eabffdacf6db5a75c56bfa3049fe29aaa382c169aa58cffebd71ada98f99ba
|
||||
agents/cloud-platform-eng/runtime/mcp.json: 553dfbd3fc0e0521d23ef369fc83be477f5e4fc2f2c25be764aa7dee9b575313
|
||||
agents/cloud-platform-eng/runtime/pi-permission-config.json: b96b33578cba45d8d7542b89bc103e2eb82f5d2d5538d588c6ade6bb331b9109
|
||||
agents/cloud-platform-eng/runtime/pi-permission-config.json: d9b2ec369f392eaafe267ec0c9ac3ad72f24f13c94dec865a78015f107685c2b
|
||||
agents/cloud-platform-eng/runtime/pi-settings.json: 56d9cda1f64c99524b01561abd9db68e1ded823962fac7b79cf957c7fe7922be
|
||||
agents/cloud-platform-eng/runtime/policy-enforcement.json: f4fa9a255600c033822ea047ef7f3d46e03235cde6df22bbd190839a933aa26d
|
||||
agents/cloud-platform-eng/runtime/policy-enforcement.json: f017e283ad87286c2724face243c97082e754802996b989c88e07962f618c224
|
||||
agents/cloud-platform-eng/skills/opentofu-plan-and-validation/SKILL.md: baacb5cbafb36c54f17a275bf7b477f31e390d25c23746c2d3db75df40d11179
|
||||
agents/cloud-platform-eng/startup/context.md: dea46f54986a0000e534a10f76a5c4524177e6bf95cd8eec641f370e86f58e07
|
||||
agents/data-pipeline-eng/agent.yaml: 68ffaca2254155ac2011bcf20365281ada1477777584111530418097cfe78298
|
||||
agents/data-pipeline-eng/guidance/role.md: 9b9ffc17b198c8602ef105e539636c53e1d6fc20c51949fa56a3971aa96c0d4d
|
||||
agents/data-pipeline-eng/runtime/mcp.json: cad448898aa8e2d4340e887be203eecb7924b83b228a645ff96cbf63e230cf65
|
||||
agents/data-pipeline-eng/runtime/pi-permission-config.json: 464f0150804cce69cdb383557e704d505e2e4f1a2c1c9ebf6e170c6d4b4ce282
|
||||
agents/data-pipeline-eng/runtime/pi-permission-config.json: f54590cf81673c0ea88d090a5fe6bcd603997659a87c13c8646ad36b5e7eb2be
|
||||
agents/data-pipeline-eng/runtime/pi-settings.json: 56d9cda1f64c99524b01561abd9db68e1ded823962fac7b79cf957c7fe7922be
|
||||
agents/data-pipeline-eng/runtime/policy-enforcement.json: 929c31349bb38ea77b63b69c9974c43980c721614ed10d4ddc2365aed51da5e7
|
||||
agents/data-pipeline-eng/runtime/policy-enforcement.json: cb0b548d39ce9888f985b79a07eda664ff28c21ddd51b2a4c1e7f55c5ed6e94e
|
||||
agents/data-pipeline-eng/skills/duckdb-dbt-pipeline-execution/SKILL.md: 5839d91c6174428233172be16e8f0d11091f93716240865c8e85d2dc2e10f5c1
|
||||
agents/data-pipeline-eng/startup/context.md: eb3d7f71b13f3d5e9aa62afde35319e4fd6bf657d8d23642a87ed3b00a0d6ae1
|
||||
agents/dba-specialist/agent.yaml: 415b87df3ff6cee91352f1276cdd4db15a36d2983eb5315adb9421dbd4f19963
|
||||
agents/dba-specialist/guidance/role.md: 72009873d11289d4209650aab09138200721152c69cc3f6707bb283bed4525a2
|
||||
agents/dba-specialist/runtime/mcp.json: 05c957e2c2e4980e9a32e54010f7e07c6d3892271d5fc64b3f4e3f9f82208ff9
|
||||
agents/dba-specialist/runtime/pi-permission-config.json: ada4629cfa220150e790ee8b7df8bbc55ea9846b98fc58e30544539905303a12
|
||||
agents/dba-specialist/runtime/pi-permission-config.json: 3eb30dedb22125db7e065b66852e745d76e1cf15f6130d695c52807f19f2e261
|
||||
agents/dba-specialist/runtime/pi-settings.json: 56d9cda1f64c99524b01561abd9db68e1ded823962fac7b79cf957c7fe7922be
|
||||
agents/dba-specialist/runtime/policy-enforcement.json: e7e1fc5f430526b2d1cdaca4292177e6767e9a09cb9ee48fc2da3bed582091ec
|
||||
agents/dba-specialist/runtime/policy-enforcement.json: 7ac82208a87e1dbd3e39c07fae7971c02601de4dcfa3d4b499e01a106425b8c3
|
||||
agents/dba-specialist/skills/zero-downtime-migration-audit/SKILL.md: f913f16991d487d783a8ed278ffd11af0bd2c1b2eeeb19292015b4fb76972ca1
|
||||
agents/dba-specialist/startup/context.md: 525f78a65562b8462774adc0944b54b9b4cbd2fc640342b5f08c82f8e6c2af8f
|
||||
agents/dependency-patcher/agent.yaml: 89acb9cd6141ab3ac9c6a350304d9b1a7ec9a7f6274024e1be22ffd58426be16
|
||||
agents/dependency-patcher/guidance/role.md: 08e3adbf0b7576d361a8d28440e1916499655b7e2c962b7354a30fd21fd2abe9
|
||||
agents/dependency-patcher/runtime/mcp.json: 29a117630a6b587fb3a7f02b8a3a4d0b0cbc9d7f1f7bdbfdc653aba3ed482c04
|
||||
agents/dependency-patcher/runtime/pi-permission-config.json: f535ce76a05ed058403fd90a9b1fe3c228211045d127c4f74900bbb59b284ea5
|
||||
agents/dependency-patcher/runtime/pi-permission-config.json: 693eb6cb761099c007c263f0798e02a306d518a71ce079f33dd9b1fa7a7ea873
|
||||
agents/dependency-patcher/runtime/pi-settings.json: 56d9cda1f64c99524b01561abd9db68e1ded823962fac7b79cf957c7fe7922be
|
||||
agents/dependency-patcher/runtime/policy-enforcement.json: 08119e37f0009605844fe60de8336d30e89ccf2576ce0d0f0a33a08b7f10a0ea
|
||||
agents/dependency-patcher/runtime/policy-enforcement.json: 117eea64a74352d61bb1495782b812ff9740bbc8401c5881f620040a334fe3f0
|
||||
agents/dependency-patcher/skills/automated-lockfile-patching/SKILL.md: 4495da482d777cfce34ba492086c5130c2b935b670fbdbb3530f8efdefadb705
|
||||
agents/dependency-patcher/startup/context.md: 3e057eb714af4019515c28d03869d0a8c5958b8742fe37123565d7a497c6ed31
|
||||
agents/k8s-orchestrator/agent.yaml: bc6950bc4c5a6a00c63eac32be9758ae264dd243366418e48902c46cea80f1be
|
||||
agents/k8s-orchestrator/guidance/role.md: 4402185eaf69f22687553d0f825378a0c0fed99f28e9d0fc5b68dcf0a6790f89
|
||||
agents/k8s-orchestrator/runtime/mcp.json: 51d32def56562221a7a0bf4f1ca9c598d38687f25f742538a23d0f2b716f743d
|
||||
agents/k8s-orchestrator/runtime/pi-permission-config.json: 559da1e2d7645f5e69c94696f852eb61136bc5c982109f0eb21ad07215015271
|
||||
agents/k8s-orchestrator/runtime/pi-permission-config.json: 9bbe9e3d2842922f1c3b7c5d94b2c615e2eedb70e50f5f890def0991e95a5272
|
||||
agents/k8s-orchestrator/runtime/pi-settings.json: 56d9cda1f64c99524b01561abd9db68e1ded823962fac7b79cf957c7fe7922be
|
||||
agents/k8s-orchestrator/runtime/policy-enforcement.json: 1cae5009711036b7f6399c1cca5aad5ecea91f062a945cb5a6c6fe100718ca88
|
||||
agents/k8s-orchestrator/runtime/policy-enforcement.json: 68b802e1a781a5eb49ba0698673cfab287c44f1026b90f8b1f9dbac7cf477628
|
||||
agents/k8s-orchestrator/skills/helm-chart-security-hardening/SKILL.md: 577578cf6f3539f62894e91a4b0ecf04bdcf76b3a450e0906eb850bfa6520e4a
|
||||
agents/k8s-orchestrator/startup/context.md: 8567c1794fd4e3e6c68ac07b770dc2eb780e8aee9765e045480109929f644f7a
|
||||
agents/mlops-serving-eng/agent.yaml: 1e9c12a614ddc1ae54f5dfb868e24792540b1b63cd4e873eba0bf33b519f0571
|
||||
agents/mlops-serving-eng/guidance/role.md: fec79971f1e3899ff483479afabeec1faa9ce761259dab5fe7fefbaa3dcee16f
|
||||
agents/mlops-serving-eng/runtime/mcp.json: d8e397af03b5b032f21d0aa967086f0c78b33c87b76f2e9898ae0a144df7de02
|
||||
agents/mlops-serving-eng/runtime/pi-permission-config.json: 1c438e8a9120cb3511c1f61f6d0cf8c589bda8ee63b73c6b3d1f4c3615f5efab
|
||||
agents/mlops-serving-eng/runtime/pi-permission-config.json: 4a3f322e40394c3a0b2235e635101e4084530e26e64d5e5faa545fc7f8f4f6d7
|
||||
agents/mlops-serving-eng/runtime/pi-settings.json: ed0f22e6beec11ce958f1cf0f206b4f0d7b899a77cbb1aba8f3d042caa7423e9
|
||||
agents/mlops-serving-eng/runtime/policy-enforcement.json: 64fb9c0d4f46959a56e421229b76fbc47b10825386e9fbebab7facbb7bf5cc1c
|
||||
agents/mlops-serving-eng/runtime/policy-enforcement.json: ae9dbee2f8c28694372a4795d56805b8496d5c53f3ebd8b78e7df0a1f3b064b8
|
||||
agents/mlops-serving-eng/skills/vllm-serving-benchmarking/SKILL.md: 90923f787e04584f76a48f515cf0f18b92ec9aeb9b9ba30da5b8bfb60e9e1ce5
|
||||
agents/mlops-serving-eng/startup/context.md: 5479124f8640c7cfe63cfc0f243fb0a93cdf9e863934cb0a64ce5d42b800216f
|
||||
agents/observability-eng/agent.yaml: 9af98694529c15c845d3cdda9596b3c0be5657d62d5667ba4887fb8946a291c4
|
||||
agents/observability-eng/guidance/role.md: 1a6bcdab14f535f0f97a1d99c7e19e81498b6ca631c5e3f5266361ebf36d457f
|
||||
agents/observability-eng/runtime/mcp.json: 3c971773f081d7d977b84cf7b6d8baf0a8366d07ed9b2e943d3d45e33dd7c5a9
|
||||
agents/observability-eng/runtime/pi-permission-config.json: 4b470e254195e1a0b7009b260555ac690cd9897a641301602555f3baba32235a
|
||||
agents/observability-eng/runtime/pi-permission-config.json: d5bae2138533c9f86f96b25b8a2a54b0cd9e5c780d8b0d3b669bbfb8434ee34a
|
||||
agents/observability-eng/runtime/pi-settings.json: 56d9cda1f64c99524b01561abd9db68e1ded823962fac7b79cf957c7fe7922be
|
||||
agents/observability-eng/runtime/policy-enforcement.json: 3696ea5c52feb43ddbabdf983f5a59543c268579e52ff5c9cafe6d332cff03c0
|
||||
agents/observability-eng/runtime/policy-enforcement.json: 257e594c40f7dd40c0ca11ee07a2037b125051ff15a20ec3a06530c6a8593b2d
|
||||
agents/observability-eng/skills/prometheus-rule-validation/SKILL.md: 640ecafcdb9a694eb9718f8587351739a40aded5d30c7cf23a2820ba9e6347d0
|
||||
agents/observability-eng/startup/context.md: 4753bd10ca95132e0fc04b0851cc8dba152b7025f8af6423448dfd557e2ae27b
|
||||
agents/sre-incident-eng/agent.yaml: 54645d26e75e2f4b38de0cbcdd739f500f594f7803ba5ba0c949f9bd099c7d5f
|
||||
agents/sre-incident-eng/guidance/role.md: 278e01e1215ad49f2b7084161cbac9da4758d888336b56b4d1fc76801206e06d
|
||||
agents/sre-incident-eng/runtime/mcp.json: 9204205ddc81553e9b576f00a782fab384e03cf3aaaec2e19a00a1dc4bc3d9e8
|
||||
agents/sre-incident-eng/runtime/pi-permission-config.json: fb9ac39dffd41b928389bcec2dd7baa6bce67c66ecbd94d16722c2786da01898
|
||||
agents/sre-incident-eng/runtime/pi-permission-config.json: 69a1d067cb49127c2875cbfd708e8716e7a5727d2fea5ee32f4bed3528f83c07
|
||||
agents/sre-incident-eng/runtime/pi-settings.json: 56d9cda1f64c99524b01561abd9db68e1ded823962fac7b79cf957c7fe7922be
|
||||
agents/sre-incident-eng/runtime/policy-enforcement.json: 00e8d2cbc3dd03d7b2171b4d2f49285ae335a0508739b6c4a1ca30d1bbbf977d
|
||||
agents/sre-incident-eng/runtime/policy-enforcement.json: 853162d771b2172a7b37b8caf688b65f3071cecc73bc03b3c2bc8a74ce235f61
|
||||
agents/sre-incident-eng/skills/blameless-incident-triage-and-postmortem/SKILL.md: 8eaeeaf872e87bce263319354b7c84933d4458bcd0dcb9a4757f5cf48e460e7c
|
||||
agents/sre-incident-eng/startup/context.md: fad3cd909aeaa2bd27641eede094dc65733c1d45d0f8491d125e77e918fdabb1
|
||||
agents/vector-rag-spec/agent.yaml: 79ac788d254e348575611b3075d77e14ea0b029a3e26a53fc408b253f0741fd5
|
||||
agents/vector-rag-spec/guidance/role.md: 5ae5563b0ed9dfdf9b49814342644496f02f52f1d6b4edd7693109f56dd8be7d
|
||||
agents/vector-rag-spec/runtime/mcp.json: 0a110c2d23edc18fc5f697210dfac9e373b103db8ab06a70f64bde647cb26b54
|
||||
agents/vector-rag-spec/runtime/pi-permission-config.json: 72fc70e38f390688a351ea74cf1a53a877b67b4e8acd995c1214d088306206ee
|
||||
agents/vector-rag-spec/runtime/pi-permission-config.json: 792acf6e362c862abbab7a958d317ddf4b9fce573b69da1d7dfd9b97f17df349
|
||||
agents/vector-rag-spec/runtime/pi-settings.json: 56d9cda1f64c99524b01561abd9db68e1ded823962fac7b79cf957c7fe7922be
|
||||
agents/vector-rag-spec/runtime/policy-enforcement.json: 391c43dfdf90cb890cbe14a39f8c8bc4b0a131e8a5cc0b71f02bee4f4b053ef3
|
||||
agents/vector-rag-spec/runtime/policy-enforcement.json: 6736a06ddc634226597fb26ec2912442ad662205230265313430b5eaf4581d7d
|
||||
agents/vector-rag-spec/skills/rag-retrieval-evaluation/SKILL.md: 6354f5cbbd82844026861b66ec0c316a2157aaeeb03e5c773b097f4f28d600dc
|
||||
agents/vector-rag-spec/startup/context.md: 8e5be9a0725279a23f59c16470fbc6c2c98b05a0233820a17af73719c9d09cdc
|
||||
configurations.yaml: abf3b6fd104f828ad11b2c710b1a2b2cff6e1fe99eba7a686a688b217e530fdc
|
||||
|
||||
@@ -117,6 +117,8 @@ resources:
|
||||
path: skills/typescript-astro
|
||||
- id: using-git-worktrees
|
||||
path: skills/using-git-worktrees
|
||||
- id: using-superpowers
|
||||
path: skills/using-superpowers
|
||||
- id: variant-analysis
|
||||
path: skills/variant-analysis
|
||||
- id: verification-before-completion
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2025 Jesse Vincent
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
@@ -0,0 +1,65 @@
|
||||
---
|
||||
name: using-superpowers
|
||||
description: Use when starting any conversation - establishes how to find and use skills, requiring skill invocation before ANY response including clarifying questions
|
||||
---
|
||||
|
||||
<SUBAGENT-STOP>
|
||||
If you were dispatched as a subagent to execute a specific task, ignore this skill.
|
||||
</SUBAGENT-STOP>
|
||||
|
||||
<EXTREMELY-IMPORTANT>
|
||||
If you think there is even a 1% chance a skill might apply to what you are doing, you ABSOLUTELY MUST invoke the skill.
|
||||
|
||||
IF A SKILL APPLIES TO YOUR TASK, YOU DO NOT HAVE A CHOICE. YOU MUST USE IT.
|
||||
|
||||
This is not negotiable. You cannot rationalize your way out of this.
|
||||
</EXTREMELY-IMPORTANT>
|
||||
|
||||
## The Rule
|
||||
|
||||
**Invoke relevant or requested skills BEFORE any response or action** — including clarifying questions, exploring the codebase, or checking files. If it turns out wrong for the situation, you don't have to use it.
|
||||
|
||||
**Before entering plan mode:** if you haven't already brainstormed, invoke the brainstorming skill first.
|
||||
|
||||
Then announce "Using [skill] to [purpose]" and follow the skill exactly. If it has a checklist, create a todo per item.
|
||||
|
||||
## Skill Priority
|
||||
|
||||
When multiple skills apply, process skills come first — they set the approach, then implementation skills (frontend-design, etc.) carry it out. Brainstorming and systematic-debugging are Superpowers' most common process skills, but the rule holds for any of them.
|
||||
|
||||
- "Let's build X" → superpowers:brainstorming first, then implementation skills.
|
||||
- "Fix this bug" → superpowers:systematic-debugging first, then domain skills.
|
||||
|
||||
## Red Flags
|
||||
|
||||
These thoughts mean STOP—you're rationalizing:
|
||||
|
||||
| Thought | Reality |
|
||||
|---------|---------|
|
||||
| "This is just a simple question" | Questions are tasks. Check for skills. |
|
||||
| "I need more context first" | Skill check comes BEFORE clarifying questions. |
|
||||
| "Let me explore the codebase first" | Skills tell you HOW to explore. Check first. |
|
||||
| "I can check git/files quickly" | Files lack conversation context. Check for skills. |
|
||||
| "Let me gather information first" | Skills tell you HOW to gather information. |
|
||||
| "This doesn't need a formal skill" | If a skill exists, use it. |
|
||||
| "I remember this skill" | Skills evolve. Read current version. |
|
||||
| "This doesn't count as a task" | Action = task. Check for skills. |
|
||||
| "The skill is overkill" | Simple things become complex. Use it. |
|
||||
| "I'll just do this one thing first" | Check BEFORE doing anything. |
|
||||
| "This feels productive" | Undisciplined action wastes time. Skills prevent this. |
|
||||
| "I know what that means" | Knowing the concept ≠ using the skill. Invoke it. |
|
||||
|
||||
## Platform Adaptation
|
||||
|
||||
If your harness appears here, read its reference file for special instructions:
|
||||
|
||||
- Claude Code: `references/claude-code-tools.md`
|
||||
- Codex: `references/codex-tools.md`
|
||||
- Pi: `references/pi-tools.md`
|
||||
- Antigravity: `references/antigravity-tools.md`
|
||||
- Hermes Agent: `references/hermes-tools.md`
|
||||
- Muse: `references/muse-tools.md`
|
||||
|
||||
## User Instructions
|
||||
|
||||
User instructions (CLAUDE.md, AGENTS.md, GEMINI.md, etc, direct requests) take precedence over skills, which in turn override default behavior. Only skip skill workflows or instructions when your human partner has explicitly told you to.
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
# Antigravity CLI (`agy`) Tool Mapping
|
||||
|
||||
Skills speak in actions ("dispatch a subagent", "create a todo", "read a file"). On the Antigravity CLI (`agy`) these resolve to the tools below.
|
||||
|
||||
| Action skills request | Antigravity CLI equivalent |
|
||||
|----------------------|----------------------|
|
||||
| Dispatch a subagent (`Subagent (general-purpose):` template) | `invoke_subagent` with a built-in `TypeName` — `self` for full-capability work, `research` for read-only |
|
||||
| Task tracking ("create a todo", "mark complete") | a **task artifact** — `write_to_file` with `IsArtifact: true` and `ArtifactType: "task"` (see [Task tracking](#task-tracking)). **Not** `manage_task`, which manages background processes. |
|
||||
|
||||
## Task tracking
|
||||
|
||||
Antigravity has **no todo tool** (`manage_task` manages background
|
||||
processes — `list`/`kill`/`status`/`send_input` — it is *not* a checklist). When a
|
||||
skill says to create a todo list or track tasks, maintain a **task artifact**: a
|
||||
markdown checklist saved with `write_to_file` (`IsArtifact: true`,
|
||||
`ArtifactMetadata.ArtifactType: "task"`), edited with `replace_file_content` /
|
||||
`multi_replace_file_content` as you go.
|
||||
|
||||
At the start of any multi-step task, create the task artifact listing every step of
|
||||
your plan. As you complete each step, edit the artifact to mark it done (`- [x]`).
|
||||
If the plan changes, update the checklist. Keep it current — it is your source of
|
||||
truth for what remains; once the conversation gets long, re-read it before starting
|
||||
each step.
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
# Claude Code Tool Notes
|
||||
|
||||
Claude Code is the reference harness: skills speak its vocabulary
|
||||
(`Agent` for a subagent dispatch, todos, `Skill`). These notes cover the
|
||||
one place Claude Code can run a plan cheaper than the skills' default
|
||||
shape. It is opt-in by your human partner and changes nothing the skills
|
||||
require.
|
||||
|
||||
## Cheaper orchestration for subagent-driven development
|
||||
|
||||
The controller session is the most expensive seat in a
|
||||
superpowers:subagent-driven-development run: it reads every dispatch
|
||||
result and every report, and it usually runs on the session's most
|
||||
capable model. Claude Code supports nested subagents (three layers below
|
||||
the main conversation by default; `CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH`
|
||||
adjusts it), so the whole loop can run one layer down.
|
||||
|
||||
When your human partner asks for it — or has said the session model is
|
||||
too expensive to spend on coordination — dispatch ONE orchestrator
|
||||
subagent on a mid-tier model with the plan path and the instruction to
|
||||
use superpowers:subagent-driven-development end to end. The orchestrator
|
||||
dispatches its own implementers and reviewers per that skill's Model
|
||||
Selection; the workspace and ledger live on disk, so nothing is lost to
|
||||
the extra layer. Its final message must carry the "Rulings I made" list
|
||||
verbatim — that list is how the decisions reach your human partner, and
|
||||
you relay it, not summarize it.
|
||||
|
||||
Do this only for a whole plan. Nesting a single task's dispatch buys
|
||||
nothing and adds a seat.
|
||||
+108
@@ -0,0 +1,108 @@
|
||||
## Subagent dispatch requires multi-agent support
|
||||
|
||||
Add to your Codex config (`~/.codex/config.toml`):
|
||||
|
||||
```toml
|
||||
[features]
|
||||
multi_agent = true
|
||||
```
|
||||
|
||||
This enables the multi-agent tools that skills like
|
||||
`dispatching-parallel-agents` and `subagent-driven-development` use.
|
||||
Which tools you get depends on the multi-agent version your model
|
||||
preset selects (current presets run V2; older ones run V1). Trust your
|
||||
actual tool list over any table — including this one — when they
|
||||
disagree.
|
||||
|
||||
- **Spawning:** give children a clean context with
|
||||
`spawn_agent {fork_turns: "none"}`; the default `"all"` copies your
|
||||
entire transcript into the child. On Codex 0.145+, role files under
|
||||
`~/.codex/agents/` attach to isolated forks via `agent_type`.
|
||||
Full-history forks accept `model` and `reasoning_effort` overrides
|
||||
(only `agent_type` is refused there) — isolated forks are the SDD
|
||||
default for context hygiene, not because overrides require them.
|
||||
- **Fix rounds:** resume the implementer with `followup_task` — it
|
||||
delivers your message, triggers a turn, and transparently reloads a
|
||||
child the harness evicted. Never dispatch a fresh implementer on the
|
||||
theory that a spawned agent cannot be messaged again; on V2 it
|
||||
always can.
|
||||
- **Lifecycle:** V2 has no `close_agent`. Finished children are
|
||||
evicted automatically when slots are needed; leaving them unclosed
|
||||
costs nothing. Only V1 sessions have `close_agent` — there, close
|
||||
reviewers when their review returns, and close each implementer
|
||||
after its task's review passes.
|
||||
- **Model names:** never copy a model name from a skill, table, or old
|
||||
session into `spawn_agent` without checking it against your current
|
||||
spawn allowlist — V2 accepts only V2-capable presets and hard-errors
|
||||
on the rest.
|
||||
|
||||
## Waiting on children
|
||||
|
||||
`wait_agent` is an event subscription, not a poll: a long wait wakes
|
||||
the moment a child produces mailbox activity, with the same latency as
|
||||
a short one. Short-timeout polling buys nothing and costs a tool call —
|
||||
and a context rebill — per poll. In measured sessions, roughly
|
||||
two-thirds of all wait calls were short polls that timed out.
|
||||
|
||||
- While you still have local work, do not wait at all. A completed
|
||||
child's final answer is pushed into your mailbox and arrives with
|
||||
your next turn.
|
||||
- When you are genuinely idle with children outstanding, wait in
|
||||
bounded stretches: `wait_agent` with `timeout_ms` 300000-600000
|
||||
(5-10 minutes). After each stretch — wake or timeout — post one
|
||||
status line, run `list_agents`, and chase any child that finished
|
||||
without reporting. Never stack polls shorter than five minutes; the
|
||||
event subscription wakes a bounded stretch just as fast as a short
|
||||
one.
|
||||
- Completion mail cannot wake an idle controller (it is delivered
|
||||
without triggering a turn); covering that idle window is
|
||||
`wait_agent`'s only job. A stretch that times out with no activity
|
||||
is your cue to reconcile, not to shorten the next stretch.
|
||||
|
||||
## Model routing on spawns
|
||||
|
||||
Every `spawn_agent` you issue — including when you are yourself a
|
||||
spawned child running a fan-out — sets `model` AND `reasoning_effort`
|
||||
explicitly, per the Model Selection rules of the skill you are
|
||||
executing. Setting `model` alone is a trap: the child's effort
|
||||
silently resets to that model's default, not to yours.
|
||||
|
||||
Ask your human partner to add a machine-level backstop to
|
||||
`~/.codex/config.toml` so any spawn that slips through still routes to
|
||||
a deliberate tier instead of silently inheriting the session's most
|
||||
expensive model:
|
||||
|
||||
```toml
|
||||
[agents]
|
||||
default_subagent_model = "<a mid-tier model from your spawn allowlist>"
|
||||
default_subagent_reasoning_effort = "medium"
|
||||
```
|
||||
|
||||
## Environment Detection
|
||||
|
||||
Skills that create worktrees or finish branches should detect their
|
||||
environment with read-only git commands before proceeding:
|
||||
|
||||
```bash
|
||||
GIT_DIR=$(cd "$(git rev-parse --git-dir)" 2>/dev/null && pwd -P)
|
||||
GIT_COMMON=$(cd "$(git rev-parse --git-common-dir)" 2>/dev/null && pwd -P)
|
||||
BRANCH=$(git branch --show-current)
|
||||
```
|
||||
|
||||
- `GIT_DIR != GIT_COMMON` → already in a linked worktree (skip creation)
|
||||
- `BRANCH` empty → detached HEAD (cannot branch/push/PR from sandbox)
|
||||
|
||||
See `using-git-worktrees` Step 0 and `finishing-a-development-branch`
|
||||
Step 1 for how each skill uses these signals.
|
||||
|
||||
## Codex App Finishing
|
||||
|
||||
When the sandbox blocks branch/push operations (detached HEAD in an
|
||||
externally managed worktree), the agent commits all work and informs
|
||||
the user to use the App's native controls:
|
||||
|
||||
- **"Create branch"** — names the branch, then commit/push/PR via App UI
|
||||
- **"Hand off to local"** — transfers work to the user's local checkout
|
||||
|
||||
The agent can still run tests, stage files, and output suggested branch
|
||||
names, commit messages, and PR descriptions for the user to copy.
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
# Gemini CLI Tool Mapping
|
||||
|
||||
Skills speak in actions ("dispatch a subagent", "create a todo", "read a file"). On Gemini CLI these resolve to the tools below.
|
||||
|
||||
| Action skills request | Gemini CLI equivalent |
|
||||
|----------------------|----------------------|
|
||||
| Read a file | `read_file` |
|
||||
| Read multiple files at once | `read_many_files` |
|
||||
| Create a new file | `write_file` |
|
||||
| Edit a file | `replace` |
|
||||
| Run a shell command | `run_shell_command` |
|
||||
| Search file contents | `grep_search` |
|
||||
| Find files by name | `glob` |
|
||||
| List files and subdirectories | `list_directory` |
|
||||
| Fetch a URL | `web_fetch` |
|
||||
| Search the web | `google_web_search` |
|
||||
| Invoke a skill | `activate_skill` |
|
||||
| Dispatch a subagent (`Subagent (general-purpose):` template) | `invoke_agent` with `agent_name: "generalist"` (invocable via `@generalist` chat syntax — see [Subagent support](#subagent-support)) |
|
||||
| Multiple parallel dispatches | Multiple `invoke_agent` calls in the same response |
|
||||
| Task tracking ("create a todo", "mark complete") | `write_todos` (statuses: pending, in_progress, completed, cancelled, blocked) |
|
||||
|
||||
## Instructions file
|
||||
|
||||
When a skill mentions "your instructions file", on Gemini CLI this is **`GEMINI.md`**. Gemini CLI loads `GEMINI.md` hierarchically: global at `~/.gemini/GEMINI.md`, project-level files in workspace directories and their ancestors, and sub-directory `GEMINI.md` files when a tool accesses files in those directories.
|
||||
|
||||
## Personal skills directory
|
||||
|
||||
User-level skills live at **`~/.gemini/skills/`**, with **`~/.agents/skills/`** as a cross-runtime alias (shared with Codex and Copilot CLI). When both directories exist at the same scope, `.agents/skills/` takes precedence. Each skill is a subdirectory containing a `SKILL.md` (with `name` and `description` frontmatter).
|
||||
|
||||
## Subagent support
|
||||
|
||||
Gemini CLI dispatches subagents through the `invoke_agent` tool, which takes `agent_name` and `prompt` parameters. The same dispatch is also surfaced as a chat-syntax shortcut: typing `@generalist <prompt>` is equivalent to calling `invoke_agent` with `agent_name: "generalist"`. Built-in agent names include `generalist`, `cli_help`, `codebase_investigator`, and (with browser tooling enabled) `browser_agent`.
|
||||
|
||||
Skills dispatch with `Subagent (general-purpose):` and either reference a prompt-template file (e.g., `superpowers:subagent-driven-development`'s `./implementer-prompt.md`) or supply an inline prompt. On Gemini CLI:
|
||||
|
||||
| Skill dispatch form | Gemini CLI equivalent |
|
||||
|---------------------|----------------------|
|
||||
| References a `*-prompt.md` template (implementer, task-reviewer, code-reviewer, etc.) | Fill the template, then `invoke_agent` with `agent_name: "generalist"` and the filled prompt |
|
||||
| References `superpowers:requesting-code-review`'s `./code-reviewer.md` | `invoke_agent` with `agent_name: "generalist"` and the filled review template |
|
||||
| Inline prompt (no template referenced) | `invoke_agent` with `agent_name: "generalist"` and your inline prompt |
|
||||
|
||||
### Prompt filling
|
||||
|
||||
Skills provide prompt templates with placeholders like `{WHAT_WAS_IMPLEMENTED}` or `[FULL TEXT of task]`. Fill all placeholders before passing the complete prompt to `invoke_agent`. The prompt template itself contains the agent's role, review criteria, and expected output format — the subagent will follow it.
|
||||
|
||||
### Parallel dispatch
|
||||
|
||||
Gemini CLI supports parallel subagent dispatch. Issue multiple `invoke_agent` calls in the same response (or multiple `@generalist` invocations in one prompt) to run independent subagent work in parallel. Keep dependent tasks sequential, but do not serialize independent subagent tasks just to preserve a simpler history.
|
||||
|
||||
## Additional Gemini CLI tools
|
||||
|
||||
These tools are unique to Gemini CLI:
|
||||
|
||||
| Tool | Purpose |
|
||||
|------|---------|
|
||||
| `save_memory` (legacy) | Persist facts across sessions when `experimental.memoryV2 = false` |
|
||||
| `get_internal_docs` | Look up Gemini CLI's bundled documentation |
|
||||
| `ask_user` | Pose structured questions to the user (text / single-select / multi-select) |
|
||||
| `enter_plan_mode` / `exit_plan_mode` | Switch into and out of read-only plan mode |
|
||||
| `update_topic` | Update the current conversation's topic / strategic-intent metadata |
|
||||
| `complete_task` | Signal that a Gemini subagent has completed and return its result to the parent agent |
|
||||
| `tracker_create_task`, `tracker_update_task`, `tracker_get_task`, `tracker_list_tasks`, `tracker_add_dependency`, `tracker_visualize` | Rich task tracker with dependency and visualization support |
|
||||
| `read_mcp_resource`, `list_mcp_resources` | MCP resource access |
|
||||
+56
@@ -0,0 +1,56 @@
|
||||
# Hermes Agent Tool Mapping
|
||||
|
||||
Skills speak in actions ("dispatch a subagent", "create a todo", "read a file"). On Hermes Agent these resolve to the tools below.
|
||||
|
||||
## Tools
|
||||
|
||||
| Action skills request | Hermes tool |
|
||||
|---|---|
|
||||
| Read a file | `read_file` |
|
||||
| Create a new file | `write_file` |
|
||||
| Edit a file (targeted patch) | `patch` |
|
||||
| Run a shell command | `terminal` |
|
||||
| Search file contents | `search_files` |
|
||||
| Find files by name | `terminal` with `find` |
|
||||
| Fetch a URL / read a webpage | `web_extract(urls=[...])` |
|
||||
| Search the web | `web_search(query=...)` |
|
||||
| Dispatch a subagent | `delegate_task(goal=..., context=..., toolsets=[...], role="leaf")` |
|
||||
| Task tracking | `todo` tool |
|
||||
| Invoke a skill | `skill_view("skill-name")` |
|
||||
|
||||
## Instructions file
|
||||
|
||||
When a skill mentions "your instructions file," on Hermes Agent this is **`AGENTS.md`** in the project directory, or **`SOUL.md`** globally at `~/.hermes/SOUL.md`.
|
||||
|
||||
## Invoking a skill
|
||||
|
||||
Hermes Agent has a `skills` toolset with `skill_view` and `skills_list` tools.
|
||||
To invoke a superpowers skill, use:
|
||||
|
||||
```
|
||||
skill_view("brainstorming")
|
||||
skill_view("test-driven-development")
|
||||
```
|
||||
|
||||
If `skill_view` cannot find a superpowers skill (it may not appear in the catalog
|
||||
until the plugin fully registers it), fall back to reading the SKILL.md directly:
|
||||
|
||||
```
|
||||
read_file(path="~/.hermes/plugins/superpowers/skills/<skill-name>/SKILL.md")
|
||||
```
|
||||
|
||||
This fallback is the same mechanism used by other harnesses without native skill loading.
|
||||
|
||||
## Subagent dispatch
|
||||
|
||||
Use `delegate_task` to spawn isolated subagents for parallel or sequential workstreams:
|
||||
|
||||
```
|
||||
delegate_task(goal="...", context="...", toolsets=[...], role="leaf")
|
||||
```
|
||||
|
||||
If `delegate_task` is unavailable, do the work inline rather than inventing tool calls.
|
||||
|
||||
## Task tracking
|
||||
|
||||
Use the `todo` tool for task tracking within a session. For multi-agent task boards, use `hermes kanban` CLI if available. Treat older `TodoWrite` references as the task-tracking action.
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
# Muse Tool Mapping
|
||||
|
||||
Skills speak in actions ("dispatch a subagent", "create a todo", "read a file"). On Muse these resolve to the tools below.
|
||||
|
||||
| Action skills request | Muse equivalent |
|
||||
|----------------------|----------------|
|
||||
| Read a file | `read_file` |
|
||||
| Read multiple files | `read_file` (call multiple times) or `search` |
|
||||
| Create a new file | `write_file` |
|
||||
| Edit a file | `edit_file` |
|
||||
| Run a shell command | `bash` |
|
||||
| Search file contents | `search` |
|
||||
| Find files by name | `search` with `glob` |
|
||||
| Fetch a URL | `web_fetch` |
|
||||
| Search the web | `web_search` |
|
||||
| Invoke a skill | `read_file` on `skills/<name>/SKILL.md` or native skill tool |
|
||||
| Dispatch a subagent (`Subagent (general-purpose):` template) | `subagent_spawn` with prompt filling |
|
||||
| Task tracking ("create a todo", "mark complete") | `write_todos` or `bash` task file |
|
||||
| Ask the user a question | `request_user_input` |
|
||||
|
||||
## Instructions file
|
||||
|
||||
When a skill mentions "your instructions file", on Muse this is **`CLAUDE.md`** or **`AGENTS.md`** in the project root. Muse loads these hierarchically where configured.
|
||||
|
||||
## Skill invocation
|
||||
|
||||
Muse has native skill support via `muse skills`. To invoke a Superpowers skill, read its `SKILL.md` and follow the instructions. The bootstrap (`using-superpowers`) is injected automatically at `SessionStart` via the plugin hook — you are already following it, do not re-load it.
|
||||
|
||||
## Subagent dispatch
|
||||
|
||||
Use `subagent_spawn` to delegate work to isolated subagents. Fill prompt templates (e.g., `implementer-prompt.md`, `task-reviewer-prompt.md`) before dispatching. If no subagent tool is available, do the work inline rather than inventing tool calls.
|
||||
|
||||
## Task tracking
|
||||
|
||||
Use `write_todos` for checklist tracking. Create one todo per skill checklist item, mark in_progress/completed as you go. If `write_todos` is unavailable, maintain a markdown task file via `write_file`/`edit_file`.
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
# Pi Tool Mapping
|
||||
|
||||
Skills speak in actions ("dispatch a subagent", "create a todo", "read a file"). On Pi these resolve to the tools below.
|
||||
|
||||
| Action skills request | Pi equivalent |
|
||||
| --- | --- |
|
||||
| Dispatch a subagent (`Subagent (general-purpose):` template) | Use an installed subagent tool such as `subagent` from `pi-subagents` if available |
|
||||
| Task tracking ("create a todo", "mark complete") | Use an installed todo/task tool if available, otherwise track tasks in the plan or `TODO.md` |
|
||||
|
||||
## Subagents
|
||||
|
||||
Pi core does not ship a standard subagent tool. The `pi-subagents` package is a strong optional companion and provides a `subagent` tool with single-agent, chain, parallel, async, forked-context, and resume/status workflows. If no subagent tool is available, do not fabricate `Task` calls; execute sequentially in the current session or explain that the optional subagent capability is not installed.
|
||||
|
||||
## Task lists
|
||||
|
||||
Pi core does not ship a standard task-list tool. If a todo/task extension is installed, use its documented tool. Otherwise use Superpowers plan files, checklists in Markdown, or a repo-local `TODO.md` for task tracking. Older Superpowers docs may refer to `TodoWrite`; treat that as the task-tracking action above.
|
||||
@@ -39,6 +39,7 @@
|
||||
"*(*": "deny",
|
||||
"*)*": "deny",
|
||||
"* -p*": "deny",
|
||||
"*\t-p*": "deny",
|
||||
"*--patch*": "deny",
|
||||
"*--full-diff*": "deny",
|
||||
"*--textconv*": "deny"
|
||||
|
||||
@@ -46,6 +46,7 @@
|
||||
"*(*": "deny",
|
||||
"*)*": "deny",
|
||||
"* -p*": "deny",
|
||||
"*\t-p*": "deny",
|
||||
"*--patch*": "deny",
|
||||
"*--full-diff*": "deny",
|
||||
"*--textconv*": "deny"
|
||||
|
||||
+1
@@ -47,6 +47,7 @@
|
||||
"*(*": "deny",
|
||||
"*)*": "deny",
|
||||
"* -p*": "deny",
|
||||
"*\t-p*": "deny",
|
||||
"*--patch*": "deny",
|
||||
"*--full-diff*": "deny",
|
||||
"*--textconv*": "deny"
|
||||
|
||||
@@ -56,6 +56,7 @@
|
||||
"*(*": "deny",
|
||||
"*)*": "deny",
|
||||
"* -p*": "deny",
|
||||
"*\t-p*": "deny",
|
||||
"*--patch*": "deny",
|
||||
"*--full-diff*": "deny",
|
||||
"*--textconv*": "deny"
|
||||
|
||||
+1
@@ -40,6 +40,7 @@
|
||||
"*(*": "deny",
|
||||
"*)*": "deny",
|
||||
"* -p*": "deny",
|
||||
"*\t-p*": "deny",
|
||||
"*--patch*": "deny",
|
||||
"*--full-diff*": "deny",
|
||||
"*--textconv*": "deny"
|
||||
|
||||
+1
@@ -47,6 +47,7 @@
|
||||
"*(*": "deny",
|
||||
"*)*": "deny",
|
||||
"* -p*": "deny",
|
||||
"*\t-p*": "deny",
|
||||
"*--patch*": "deny",
|
||||
"*--full-diff*": "deny",
|
||||
"*--textconv*": "deny"
|
||||
|
||||
+1
@@ -39,6 +39,7 @@
|
||||
"*(*": "deny",
|
||||
"*)*": "deny",
|
||||
"* -p*": "deny",
|
||||
"*\t-p*": "deny",
|
||||
"*--patch*": "deny",
|
||||
"*--full-diff*": "deny",
|
||||
"*--textconv*": "deny"
|
||||
|
||||
+1
@@ -46,6 +46,7 @@
|
||||
"*(*": "deny",
|
||||
"*)*": "deny",
|
||||
"* -p*": "deny",
|
||||
"*\t-p*": "deny",
|
||||
"*--patch*": "deny",
|
||||
"*--full-diff*": "deny",
|
||||
"*--textconv*": "deny"
|
||||
|
||||
+1
@@ -39,6 +39,7 @@
|
||||
"*(*": "deny",
|
||||
"*)*": "deny",
|
||||
"* -p*": "deny",
|
||||
"*\t-p*": "deny",
|
||||
"*--patch*": "deny",
|
||||
"*--full-diff*": "deny",
|
||||
"*--textconv*": "deny"
|
||||
|
||||
+1
@@ -46,6 +46,7 @@
|
||||
"*(*": "deny",
|
||||
"*)*": "deny",
|
||||
"* -p*": "deny",
|
||||
"*\t-p*": "deny",
|
||||
"*--patch*": "deny",
|
||||
"*--full-diff*": "deny",
|
||||
"*--textconv*": "deny"
|
||||
|
||||
+1
@@ -40,6 +40,7 @@
|
||||
"*(*": "deny",
|
||||
"*)*": "deny",
|
||||
"* -p*": "deny",
|
||||
"*\t-p*": "deny",
|
||||
"*--patch*": "deny",
|
||||
"*--full-diff*": "deny",
|
||||
"*--textconv*": "deny"
|
||||
|
||||
+1
@@ -47,6 +47,7 @@
|
||||
"*(*": "deny",
|
||||
"*)*": "deny",
|
||||
"* -p*": "deny",
|
||||
"*\t-p*": "deny",
|
||||
"*--patch*": "deny",
|
||||
"*--full-diff*": "deny",
|
||||
"*--textconv*": "deny"
|
||||
|
||||
+1
@@ -36,6 +36,7 @@
|
||||
"*(*": "deny",
|
||||
"*)*": "deny",
|
||||
"* -p*": "deny",
|
||||
"*\t-p*": "deny",
|
||||
"*--patch*": "deny",
|
||||
"*--full-diff*": "deny",
|
||||
"*--textconv*": "deny"
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
"*(*": "deny",
|
||||
"*)*": "deny",
|
||||
"* -p*": "deny",
|
||||
"*\t-p*": "deny",
|
||||
"*--patch*": "deny",
|
||||
"*--full-diff*": "deny",
|
||||
"*--textconv*": "deny"
|
||||
|
||||
@@ -28,7 +28,7 @@ agents:
|
||||
version: '1.0'
|
||||
path: agents/_shared
|
||||
original_ref: local:../_shared
|
||||
hash: 954498133668f5209742225f02a415b2c0d478a521220ab3ec4aeb2d9c261c50
|
||||
hash: a0e0af955e71c9481c53f81203e673192105d327f903de5337f6dc8efbbf13ca
|
||||
- name: appsec-engineer
|
||||
version: '1.0'
|
||||
path: agents/appsec-engineer
|
||||
@@ -39,7 +39,7 @@ agents:
|
||||
version: '1.0'
|
||||
path: agents/_shared
|
||||
original_ref: local:../_shared
|
||||
hash: 954498133668f5209742225f02a415b2c0d478a521220ab3ec4aeb2d9c261c50
|
||||
hash: a0e0af955e71c9481c53f81203e673192105d327f903de5337f6dc8efbbf13ca
|
||||
- name: cloud-sec-auditor
|
||||
version: '1.0'
|
||||
path: agents/cloud-sec-auditor
|
||||
@@ -50,7 +50,7 @@ agents:
|
||||
version: '1.0'
|
||||
path: agents/_shared
|
||||
original_ref: local:../_shared
|
||||
hash: 954498133668f5209742225f02a415b2c0d478a521220ab3ec4aeb2d9c261c50
|
||||
hash: a0e0af955e71c9481c53f81203e673192105d327f903de5337f6dc8efbbf13ca
|
||||
- name: compliance-auditor
|
||||
version: '1.0'
|
||||
path: agents/compliance-auditor
|
||||
@@ -61,7 +61,7 @@ agents:
|
||||
version: '1.0'
|
||||
path: agents/_shared
|
||||
original_ref: local:../_shared
|
||||
hash: 954498133668f5209742225f02a415b2c0d478a521220ab3ec4aeb2d9c261c50
|
||||
hash: a0e0af955e71c9481c53f81203e673192105d327f903de5337f6dc8efbbf13ca
|
||||
- name: ai-red-teamer
|
||||
version: '1.0'
|
||||
path: agents/ai-red-teamer
|
||||
@@ -72,7 +72,7 @@ agents:
|
||||
version: '1.0'
|
||||
path: agents/_shared
|
||||
original_ref: local:../_shared
|
||||
hash: 954498133668f5209742225f02a415b2c0d478a521220ab3ec4aeb2d9c261c50
|
||||
hash: a0e0af955e71c9481c53f81203e673192105d327f903de5337f6dc8efbbf13ca
|
||||
- name: binary-reverse-eng
|
||||
version: '1.0'
|
||||
path: agents/binary-reverse-eng
|
||||
@@ -83,7 +83,7 @@ agents:
|
||||
version: '1.0'
|
||||
path: agents/_shared
|
||||
original_ref: local:../_shared
|
||||
hash: 954498133668f5209742225f02a415b2c0d478a521220ab3ec4aeb2d9c261c50
|
||||
hash: a0e0af955e71c9481c53f81203e673192105d327f903de5337f6dc8efbbf13ca
|
||||
- name: firmware-sec-analyst
|
||||
version: '1.0'
|
||||
path: agents/firmware-sec-analyst
|
||||
@@ -94,14 +94,14 @@ agents:
|
||||
version: '1.0'
|
||||
path: agents/_shared
|
||||
original_ref: local:../_shared
|
||||
hash: 954498133668f5209742225f02a415b2c0d478a521220ab3ec4aeb2d9c261c50
|
||||
hash: a0e0af955e71c9481c53f81203e673192105d327f903de5337f6dc8efbbf13ca
|
||||
integrity:
|
||||
algorithm: sha256
|
||||
files:
|
||||
CULTURE.md: 138469da9119bebdc81c706e748d38989504a0b2f281619470763b81c492c833
|
||||
README.md: 282c304c79cf2bdacef02d4e57d7c776470395554c39652acdaee6118d7093b3
|
||||
SETUP.md: c98b347de133770a2df005afbd6304e892db6762a5aeceb0e2bbb75f83241002
|
||||
agents/_shared/agent.yaml: 954498133668f5209742225f02a415b2c0d478a521220ab3ec4aeb2d9c261c50
|
||||
agents/_shared/agent.yaml: a0e0af955e71c9481c53f81203e673192105d327f903de5337f6dc8efbbf13ca
|
||||
agents/_shared/skills/address-sanitizer/LICENSE: 7abe19ec9bb73b36141b999b861d24ad855e808bafe0f81e84cce28556f6c297
|
||||
agents/_shared/skills/address-sanitizer/SKILL.md: eb9ea8210fa55d50477fbe52993a704e320c88739c10d619864b6ce377ebce25
|
||||
agents/_shared/skills/address-sanitizer/agents/openai.yaml: cbad1378f4912a71dec8c1c9307b806f787c559e751a5fd1926028f1c0c2e7b5
|
||||
@@ -509,6 +509,15 @@ integrity:
|
||||
agents/_shared/skills/typescript-astro/SKILL.md: 6db8903dc14702a1cfde72da1ea5d00c2ed799aba8f71c125a8ab1bc46948bc7
|
||||
agents/_shared/skills/using-git-worktrees/LICENSE: a37e0e9697144819e1d965176ac4ae5bc3fa02d11e7812036bbcadf6dafe2400
|
||||
agents/_shared/skills/using-git-worktrees/SKILL.md: 8cfb86f121269e8f7f12361e6795c4f6738828340e28964c9229d365666c9edd
|
||||
agents/_shared/skills/using-superpowers/LICENSE: a37e0e9697144819e1d965176ac4ae5bc3fa02d11e7812036bbcadf6dafe2400
|
||||
agents/_shared/skills/using-superpowers/SKILL.md: 82c5c8866ad7f5dd4440ce66bd7806ba48a2f13771beae5cf112e53f08fe36ba
|
||||
agents/_shared/skills/using-superpowers/references/antigravity-tools.md: 4880f6de3da4e32f9659ebe7a72b9e0ebfff04e028c2ed96173f86d0387a04c0
|
||||
agents/_shared/skills/using-superpowers/references/claude-code-tools.md: 21479a3fee27448cab8748a3b5687e53bb257883bda9c070426f9a1ab5cebf1b
|
||||
agents/_shared/skills/using-superpowers/references/codex-tools.md: 1a38ad9b188c393052f58d95657a1c35ea6aafc8b5a27f198f3922912f70bbe7
|
||||
agents/_shared/skills/using-superpowers/references/gemini-tools.md: 62b9157bcb0ee3c6784e3d0da0798ddfa5872f9e0c34bea48f3079dabea71965
|
||||
agents/_shared/skills/using-superpowers/references/hermes-tools.md: e2185c976a3c87503910e05e2aea58cc89bc8e569bb624b93df9958ac47a9190
|
||||
agents/_shared/skills/using-superpowers/references/muse-tools.md: 5a1da5c575fe18456ca71cd47ebfd8a38c745f8d82a67fe64d5b83080000eeb3
|
||||
agents/_shared/skills/using-superpowers/references/pi-tools.md: 703dbc83d23ecab9c6f388460c38abc482e9dee2fe6772a8c7a255152ad3a4d5
|
||||
agents/_shared/skills/variant-analysis/LICENSE: 7abe19ec9bb73b36141b999b861d24ad855e808bafe0f81e84cce28556f6c297
|
||||
agents/_shared/skills/variant-analysis/SKILL.md: 7b6b78e499bcb88d05c68254ffc91ebc28edabf4e9808adcc40e2628ebb9407e
|
||||
agents/_shared/skills/variant-analysis/agents/openai.yaml: 6d6b67250ba8300e79491ac12e73262f54f2bf50776276fd04607ae4e3006fde
|
||||
@@ -565,9 +574,9 @@ integrity:
|
||||
agents/ai-red-teamer/agent.yaml: f31a98385d78aed71e9b44d9b67b4024f70f4c58c429a5f5f202941bc493f47b
|
||||
agents/ai-red-teamer/guidance/role.md: 333156455463b525d8e998b9a229840fd0b9b56db97a59ac36857ec297083ade
|
||||
agents/ai-red-teamer/runtime/mcp.json: f4b1c84549b5099a5ec7db9c69ea685e45a333d7d1b9437c4f504f2274f6a34a
|
||||
agents/ai-red-teamer/runtime/pi-permission-config.json: bcd9bfa1ed438029d5163e2565d38f66212be841bc71d015f4b04c8ce041a0d8
|
||||
agents/ai-red-teamer/runtime/pi-permission-config.json: 79721f96c2daa345a24509cc591abdc9505f0ebcb25b5ea7072de35c059ec245
|
||||
agents/ai-red-teamer/runtime/pi-settings.json: 42d649c0faf44344ef1bf015109a153ecc1872de08d993f58ee266683574f784
|
||||
agents/ai-red-teamer/runtime/policy-enforcement.json: 52538cb2132dbdde111ab0a948197f398dbc38b70c09af5f02815d9874c9b6a8
|
||||
agents/ai-red-teamer/runtime/policy-enforcement.json: 56e8e61f60be23b2db2ada07eaeb1ce4e37aa573fdd7e2897ccbd216ebdd99e3
|
||||
agents/ai-red-teamer/skills/auditing-mcp-servers-for-tool-poisoning/SKILL.md: 742ba124a9dd9d5109654fcf566cbec63e0d87f941cbd480ecbaeab596d38e22
|
||||
agents/ai-red-teamer/skills/detecting-ai-model-prompt-injection-attacks/SKILL.md: c6be759524e385194b85e79b7d38545a9914c79d95c65ad946a2e0444527cdcd
|
||||
agents/ai-red-teamer/skills/detecting-indirect-prompt-injection/SKILL.md: 9a79a873c014dc192c7cc627591a7273e7a5efcaae3263e0d9357ee41455226e
|
||||
@@ -577,50 +586,50 @@ integrity:
|
||||
agents/appsec-engineer/agent.yaml: 10bd12005d94f41f15e5beb9c84e7cb9bcc14a7580d4d9447c3387fe7d3490f7
|
||||
agents/appsec-engineer/guidance/role.md: eb579b8b7d4ffd5d28f5ce33c833d86b6a76627b58b3edd5d681873c6799ff1d
|
||||
agents/appsec-engineer/runtime/mcp.json: dff664dd98151d63624d7036dcbc6ace995af2c99eab34d3071d4f1eec990858
|
||||
agents/appsec-engineer/runtime/pi-permission-config.json: 2adac594741b23af8e0c3f9133f507e75a934ac10e80f12865efc17b4e946541
|
||||
agents/appsec-engineer/runtime/pi-permission-config.json: 6064d4a3eaf1d54edc77e27f0bade743cce57910e96594ad870814980524b188
|
||||
agents/appsec-engineer/runtime/pi-settings.json: 56d9cda1f64c99524b01561abd9db68e1ded823962fac7b79cf957c7fe7922be
|
||||
agents/appsec-engineer/runtime/policy-enforcement.json: 5e0f62fe2dbcf2dc9fd5e7d17dcd680d915ed01c3c25d98c3c0d2bdc4cb1743f
|
||||
agents/appsec-engineer/runtime/policy-enforcement.json: 101afecc880f9ac1a8914703f1fda7b3dae627e3a2b221fab5eafd52c46ec738
|
||||
agents/appsec-engineer/skills/owasp-reachability-triage/SKILL.md: 2e8f032a90fbbf9fa47ad4f10c29f74cb463a16958a8e43bf1cd02af16fd4ff2
|
||||
agents/appsec-engineer/startup/context.md: 099e13ed7fc0d8336d887010bef211fdbf7e97f800d3c46e269686871c6762f0
|
||||
agents/binary-reverse-eng/agent.yaml: 261aa908185649b3db9e988aa643316441eb71c73bb036afcb0989043e34ed05
|
||||
agents/binary-reverse-eng/guidance/role.md: 796e73d471432a2b51f08913cceea03aa71d052ce1cc452df8d99acd9553cae7
|
||||
agents/binary-reverse-eng/runtime/mcp.json: 74d26e46b9d0c31243b110ea3f46d01312ebbed958d16d7fb2933f3c0d273333
|
||||
agents/binary-reverse-eng/runtime/pi-permission-config.json: e67c30de3b1c87af1ddf8b876247d80e3b8f0d2e63b919cee02fdeb70184807e
|
||||
agents/binary-reverse-eng/runtime/pi-permission-config.json: c800ac1088a207eac2080e570c2bcb5126f4020da7f3fbfb092b8978f603caf3
|
||||
agents/binary-reverse-eng/runtime/pi-settings.json: 42d649c0faf44344ef1bf015109a153ecc1872de08d993f58ee266683574f784
|
||||
agents/binary-reverse-eng/runtime/policy-enforcement.json: ce2eea555a97e43a10e0bbc1f81bb1407c4cc28ff2172ae7c80b767da6fd95c2
|
||||
agents/binary-reverse-eng/runtime/policy-enforcement.json: e31ed86c944b910e12dfd3fec8df12ab1b87b66ff81e59a4d9becda7d3884a2b
|
||||
agents/binary-reverse-eng/skills/radare2-defensive-disassembly/SKILL.md: 44607fb08d95a55234c11200e06ab5c51fe0507913d4aca196d7202c90e2f596
|
||||
agents/binary-reverse-eng/skills/rea-evidence-based-decompilation/SKILL.md: 72d037437cf9bc393850d1eff5117230bcbd598258ff03b7a8b88ab916950d30
|
||||
agents/binary-reverse-eng/startup/context.md: a58fee9618edc8d540decc3b82957adb91fc25903c9587e84652f6fb8cd90234
|
||||
agents/cloud-sec-auditor/agent.yaml: f1c488b5edb3549eb9f167db63df521f0cb2bf13e67c78f81b0da3fb9ce49ffd
|
||||
agents/cloud-sec-auditor/guidance/role.md: 41f00d4bca4a32b63e536fd9c70ff458ded5be38cd9421bab600da18598b0f7f
|
||||
agents/cloud-sec-auditor/runtime/mcp.json: 0c8ddd8e6a54486e8efa4d90348f52a5317b3243560a4f4fe286effad1e5e373
|
||||
agents/cloud-sec-auditor/runtime/pi-permission-config.json: 9c990f28f2fc6b075f7224c6a5fa9fbbe515cc3e9c6ab20993603ee1f86a56fb
|
||||
agents/cloud-sec-auditor/runtime/pi-permission-config.json: 598e7bc3cbd291cee6b7ac7d824f87f398c40ec611163ca094956747263e7cd9
|
||||
agents/cloud-sec-auditor/runtime/pi-settings.json: 56d9cda1f64c99524b01561abd9db68e1ded823962fac7b79cf957c7fe7922be
|
||||
agents/cloud-sec-auditor/runtime/policy-enforcement.json: 3f691659b3e451b52de50fdc825e70fbe70992e09ec946274fc7e1d234db0adc
|
||||
agents/cloud-sec-auditor/runtime/policy-enforcement.json: e0f2eda8e269224048a4de4ae460c8746cd5caa3e4e6ac9ed0ce0301d75b7fbd
|
||||
agents/cloud-sec-auditor/skills/iam-least-privilege-audit/SKILL.md: 7f04f1c4c1db007c2cf3396d65254fcf22c109189c9d03d7a4a7f00c32f9170a
|
||||
agents/cloud-sec-auditor/startup/context.md: 45e01e75b856b730ba63f061d84cdad5464fb5db21bdd32550cd1c7161850c9a
|
||||
agents/compliance-auditor/agent.yaml: 4d484c8e88530c2e05faae18098799403e9828753cacd442376841fedf550013
|
||||
agents/compliance-auditor/guidance/role.md: a0b9fd5eb55d1fd4467d52b4afe1bd5a9893f56d7b7ec018f877908454ddfb4c
|
||||
agents/compliance-auditor/runtime/mcp.json: dd4f89175140cea1bffff81659645fd845386f0b48a8b3ba8e99d58df12609fd
|
||||
agents/compliance-auditor/runtime/pi-permission-config.json: 6724efe9fded4526487dd2d6b86ec3386c5f3e75d27f6431334a2e73080cffcd
|
||||
agents/compliance-auditor/runtime/pi-permission-config.json: 7cada5e8da614a63162bd0c21c352f1ad6266db4c860d5d2c53aefaaf19843bd
|
||||
agents/compliance-auditor/runtime/pi-settings.json: 56d9cda1f64c99524b01561abd9db68e1ded823962fac7b79cf957c7fe7922be
|
||||
agents/compliance-auditor/runtime/policy-enforcement.json: 7a0ff73e5356dcc53e271d88cfd8d1a84351098f83de22d921ca2cd57dde6462
|
||||
agents/compliance-auditor/runtime/policy-enforcement.json: 53947c316beb7d805bd98c7dfa27dbbfdc8c7c624ba647989175ee865264f8bd
|
||||
agents/compliance-auditor/skills/sbom-generation-and-license-audit/SKILL.md: 077033137006135c53214a4fd98affb402548c7e3bff7769ef347fa671fc8cdb
|
||||
agents/compliance-auditor/startup/context.md: a4ea2fba53fb3ef0002ccce0812cce7feeee2e0732dad87b746dd8dcdb63cc79
|
||||
agents/firmware-sec-analyst/agent.yaml: adf9c39628cf54c2da47c15de7e3a3d3caf36f880dad8f0347392539be6e40e3
|
||||
agents/firmware-sec-analyst/guidance/role.md: fdd0fb74519a89b470d1fd52a5c23ea39c65efad7cd5f854a3ddfc916303db4e
|
||||
agents/firmware-sec-analyst/runtime/mcp.json: 74d26e46b9d0c31243b110ea3f46d01312ebbed958d16d7fb2933f3c0d273333
|
||||
agents/firmware-sec-analyst/runtime/pi-permission-config.json: e5d0b06ca639b9fe28e96bdc33bb6c97632137e50cc2829e6e6cf25356d32cb4
|
||||
agents/firmware-sec-analyst/runtime/pi-permission-config.json: dfd08d0a15e6ea528517e0a17f4ee32a1971beb18ed5514c6b7cf1ebbbf8893e
|
||||
agents/firmware-sec-analyst/runtime/pi-settings.json: 56d9cda1f64c99524b01561abd9db68e1ded823962fac7b79cf957c7fe7922be
|
||||
agents/firmware-sec-analyst/runtime/policy-enforcement.json: 9d795cc958fb7fb935c8ede9ea64a3cb1b99c33fc18e01cf1742a82dec04a408
|
||||
agents/firmware-sec-analyst/runtime/policy-enforcement.json: a9408a242acb5d155b9fd112edb4c120047d788f6ea0d09d037d60193da3a500
|
||||
agents/firmware-sec-analyst/skills/firmware-extraction-and-hardening-audit/SKILL.md: 685b9523c26f8dd1f065b22f159be7b61f1b0d09609543401018e7571a028fb2
|
||||
agents/firmware-sec-analyst/startup/context.md: 367bb017f4ee4f0b51a1fad4211f4e37b16007443fa00efc18dba8f8cbb4d56d
|
||||
agents/threat-modeler/agent.yaml: 270a40ba9ac2739488f754e82c7607f8296ec65ac475111ff75a91a8222f074d
|
||||
agents/threat-modeler/guidance/role.md: 1ff68992f2b6849a02ed859668fac1394ca166d603823a0ead7e7d6c29d90eb4
|
||||
agents/threat-modeler/runtime/mcp.json: ecafd2a6e1b60bc5a3d3bc397326073c930c95630939d8d28d66b407ab237a0d
|
||||
agents/threat-modeler/runtime/pi-permission-config.json: 54201552c4610f8dcdaa8bf771ce110e118118903809bb99a4606f36bd99af05
|
||||
agents/threat-modeler/runtime/pi-permission-config.json: 0925a48810789b5b46ac5719b8caaf577a1868c105ab8594a65344799a2d4cfd
|
||||
agents/threat-modeler/runtime/pi-settings.json: 42d649c0faf44344ef1bf015109a153ecc1872de08d993f58ee266683574f784
|
||||
agents/threat-modeler/runtime/policy-enforcement.json: 4b4985511bec1ce1466cd52e8de579c2beba4984cfe4e75ffeea7d156449deca
|
||||
agents/threat-modeler/runtime/policy-enforcement.json: 57efda023c37ed5759823193aa1c1b4bce29d1336fd73f838edc8236be8ce443
|
||||
agents/threat-modeler/skills/stride-threat-modeling/SKILL.md: 7f7bdbb8aa2cab064c18573e9a946bffa9f7dd21f0fb254dd4a175ff9a4a3053
|
||||
agents/threat-modeler/startup/context.md: 5eba727b91471a13478048345581db98ee31a5663e6545d7fcac7297cfcc7e6e
|
||||
configurations.yaml: 20c35e92d8d48958eec90e8d5004784b5c976e93106fc0765c3dfde74b0f076e
|
||||
|
||||
@@ -117,6 +117,8 @@ resources:
|
||||
path: skills/typescript-astro
|
||||
- id: using-git-worktrees
|
||||
path: skills/using-git-worktrees
|
||||
- id: using-superpowers
|
||||
path: skills/using-superpowers
|
||||
- id: variant-analysis
|
||||
path: skills/variant-analysis
|
||||
- id: verification-before-completion
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2025 Jesse Vincent
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
@@ -0,0 +1,65 @@
|
||||
---
|
||||
name: using-superpowers
|
||||
description: Use when starting any conversation - establishes how to find and use skills, requiring skill invocation before ANY response including clarifying questions
|
||||
---
|
||||
|
||||
<SUBAGENT-STOP>
|
||||
If you were dispatched as a subagent to execute a specific task, ignore this skill.
|
||||
</SUBAGENT-STOP>
|
||||
|
||||
<EXTREMELY-IMPORTANT>
|
||||
If you think there is even a 1% chance a skill might apply to what you are doing, you ABSOLUTELY MUST invoke the skill.
|
||||
|
||||
IF A SKILL APPLIES TO YOUR TASK, YOU DO NOT HAVE A CHOICE. YOU MUST USE IT.
|
||||
|
||||
This is not negotiable. You cannot rationalize your way out of this.
|
||||
</EXTREMELY-IMPORTANT>
|
||||
|
||||
## The Rule
|
||||
|
||||
**Invoke relevant or requested skills BEFORE any response or action** — including clarifying questions, exploring the codebase, or checking files. If it turns out wrong for the situation, you don't have to use it.
|
||||
|
||||
**Before entering plan mode:** if you haven't already brainstormed, invoke the brainstorming skill first.
|
||||
|
||||
Then announce "Using [skill] to [purpose]" and follow the skill exactly. If it has a checklist, create a todo per item.
|
||||
|
||||
## Skill Priority
|
||||
|
||||
When multiple skills apply, process skills come first — they set the approach, then implementation skills (frontend-design, etc.) carry it out. Brainstorming and systematic-debugging are Superpowers' most common process skills, but the rule holds for any of them.
|
||||
|
||||
- "Let's build X" → superpowers:brainstorming first, then implementation skills.
|
||||
- "Fix this bug" → superpowers:systematic-debugging first, then domain skills.
|
||||
|
||||
## Red Flags
|
||||
|
||||
These thoughts mean STOP—you're rationalizing:
|
||||
|
||||
| Thought | Reality |
|
||||
|---------|---------|
|
||||
| "This is just a simple question" | Questions are tasks. Check for skills. |
|
||||
| "I need more context first" | Skill check comes BEFORE clarifying questions. |
|
||||
| "Let me explore the codebase first" | Skills tell you HOW to explore. Check first. |
|
||||
| "I can check git/files quickly" | Files lack conversation context. Check for skills. |
|
||||
| "Let me gather information first" | Skills tell you HOW to gather information. |
|
||||
| "This doesn't need a formal skill" | If a skill exists, use it. |
|
||||
| "I remember this skill" | Skills evolve. Read current version. |
|
||||
| "This doesn't count as a task" | Action = task. Check for skills. |
|
||||
| "The skill is overkill" | Simple things become complex. Use it. |
|
||||
| "I'll just do this one thing first" | Check BEFORE doing anything. |
|
||||
| "This feels productive" | Undisciplined action wastes time. Skills prevent this. |
|
||||
| "I know what that means" | Knowing the concept ≠ using the skill. Invoke it. |
|
||||
|
||||
## Platform Adaptation
|
||||
|
||||
If your harness appears here, read its reference file for special instructions:
|
||||
|
||||
- Claude Code: `references/claude-code-tools.md`
|
||||
- Codex: `references/codex-tools.md`
|
||||
- Pi: `references/pi-tools.md`
|
||||
- Antigravity: `references/antigravity-tools.md`
|
||||
- Hermes Agent: `references/hermes-tools.md`
|
||||
- Muse: `references/muse-tools.md`
|
||||
|
||||
## User Instructions
|
||||
|
||||
User instructions (CLAUDE.md, AGENTS.md, GEMINI.md, etc, direct requests) take precedence over skills, which in turn override default behavior. Only skip skill workflows or instructions when your human partner has explicitly told you to.
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
# Antigravity CLI (`agy`) Tool Mapping
|
||||
|
||||
Skills speak in actions ("dispatch a subagent", "create a todo", "read a file"). On the Antigravity CLI (`agy`) these resolve to the tools below.
|
||||
|
||||
| Action skills request | Antigravity CLI equivalent |
|
||||
|----------------------|----------------------|
|
||||
| Dispatch a subagent (`Subagent (general-purpose):` template) | `invoke_subagent` with a built-in `TypeName` — `self` for full-capability work, `research` for read-only |
|
||||
| Task tracking ("create a todo", "mark complete") | a **task artifact** — `write_to_file` with `IsArtifact: true` and `ArtifactType: "task"` (see [Task tracking](#task-tracking)). **Not** `manage_task`, which manages background processes. |
|
||||
|
||||
## Task tracking
|
||||
|
||||
Antigravity has **no todo tool** (`manage_task` manages background
|
||||
processes — `list`/`kill`/`status`/`send_input` — it is *not* a checklist). When a
|
||||
skill says to create a todo list or track tasks, maintain a **task artifact**: a
|
||||
markdown checklist saved with `write_to_file` (`IsArtifact: true`,
|
||||
`ArtifactMetadata.ArtifactType: "task"`), edited with `replace_file_content` /
|
||||
`multi_replace_file_content` as you go.
|
||||
|
||||
At the start of any multi-step task, create the task artifact listing every step of
|
||||
your plan. As you complete each step, edit the artifact to mark it done (`- [x]`).
|
||||
If the plan changes, update the checklist. Keep it current — it is your source of
|
||||
truth for what remains; once the conversation gets long, re-read it before starting
|
||||
each step.
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
# Claude Code Tool Notes
|
||||
|
||||
Claude Code is the reference harness: skills speak its vocabulary
|
||||
(`Agent` for a subagent dispatch, todos, `Skill`). These notes cover the
|
||||
one place Claude Code can run a plan cheaper than the skills' default
|
||||
shape. It is opt-in by your human partner and changes nothing the skills
|
||||
require.
|
||||
|
||||
## Cheaper orchestration for subagent-driven development
|
||||
|
||||
The controller session is the most expensive seat in a
|
||||
superpowers:subagent-driven-development run: it reads every dispatch
|
||||
result and every report, and it usually runs on the session's most
|
||||
capable model. Claude Code supports nested subagents (three layers below
|
||||
the main conversation by default; `CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH`
|
||||
adjusts it), so the whole loop can run one layer down.
|
||||
|
||||
When your human partner asks for it — or has said the session model is
|
||||
too expensive to spend on coordination — dispatch ONE orchestrator
|
||||
subagent on a mid-tier model with the plan path and the instruction to
|
||||
use superpowers:subagent-driven-development end to end. The orchestrator
|
||||
dispatches its own implementers and reviewers per that skill's Model
|
||||
Selection; the workspace and ledger live on disk, so nothing is lost to
|
||||
the extra layer. Its final message must carry the "Rulings I made" list
|
||||
verbatim — that list is how the decisions reach your human partner, and
|
||||
you relay it, not summarize it.
|
||||
|
||||
Do this only for a whole plan. Nesting a single task's dispatch buys
|
||||
nothing and adds a seat.
|
||||
+108
@@ -0,0 +1,108 @@
|
||||
## Subagent dispatch requires multi-agent support
|
||||
|
||||
Add to your Codex config (`~/.codex/config.toml`):
|
||||
|
||||
```toml
|
||||
[features]
|
||||
multi_agent = true
|
||||
```
|
||||
|
||||
This enables the multi-agent tools that skills like
|
||||
`dispatching-parallel-agents` and `subagent-driven-development` use.
|
||||
Which tools you get depends on the multi-agent version your model
|
||||
preset selects (current presets run V2; older ones run V1). Trust your
|
||||
actual tool list over any table — including this one — when they
|
||||
disagree.
|
||||
|
||||
- **Spawning:** give children a clean context with
|
||||
`spawn_agent {fork_turns: "none"}`; the default `"all"` copies your
|
||||
entire transcript into the child. On Codex 0.145+, role files under
|
||||
`~/.codex/agents/` attach to isolated forks via `agent_type`.
|
||||
Full-history forks accept `model` and `reasoning_effort` overrides
|
||||
(only `agent_type` is refused there) — isolated forks are the SDD
|
||||
default for context hygiene, not because overrides require them.
|
||||
- **Fix rounds:** resume the implementer with `followup_task` — it
|
||||
delivers your message, triggers a turn, and transparently reloads a
|
||||
child the harness evicted. Never dispatch a fresh implementer on the
|
||||
theory that a spawned agent cannot be messaged again; on V2 it
|
||||
always can.
|
||||
- **Lifecycle:** V2 has no `close_agent`. Finished children are
|
||||
evicted automatically when slots are needed; leaving them unclosed
|
||||
costs nothing. Only V1 sessions have `close_agent` — there, close
|
||||
reviewers when their review returns, and close each implementer
|
||||
after its task's review passes.
|
||||
- **Model names:** never copy a model name from a skill, table, or old
|
||||
session into `spawn_agent` without checking it against your current
|
||||
spawn allowlist — V2 accepts only V2-capable presets and hard-errors
|
||||
on the rest.
|
||||
|
||||
## Waiting on children
|
||||
|
||||
`wait_agent` is an event subscription, not a poll: a long wait wakes
|
||||
the moment a child produces mailbox activity, with the same latency as
|
||||
a short one. Short-timeout polling buys nothing and costs a tool call —
|
||||
and a context rebill — per poll. In measured sessions, roughly
|
||||
two-thirds of all wait calls were short polls that timed out.
|
||||
|
||||
- While you still have local work, do not wait at all. A completed
|
||||
child's final answer is pushed into your mailbox and arrives with
|
||||
your next turn.
|
||||
- When you are genuinely idle with children outstanding, wait in
|
||||
bounded stretches: `wait_agent` with `timeout_ms` 300000-600000
|
||||
(5-10 minutes). After each stretch — wake or timeout — post one
|
||||
status line, run `list_agents`, and chase any child that finished
|
||||
without reporting. Never stack polls shorter than five minutes; the
|
||||
event subscription wakes a bounded stretch just as fast as a short
|
||||
one.
|
||||
- Completion mail cannot wake an idle controller (it is delivered
|
||||
without triggering a turn); covering that idle window is
|
||||
`wait_agent`'s only job. A stretch that times out with no activity
|
||||
is your cue to reconcile, not to shorten the next stretch.
|
||||
|
||||
## Model routing on spawns
|
||||
|
||||
Every `spawn_agent` you issue — including when you are yourself a
|
||||
spawned child running a fan-out — sets `model` AND `reasoning_effort`
|
||||
explicitly, per the Model Selection rules of the skill you are
|
||||
executing. Setting `model` alone is a trap: the child's effort
|
||||
silently resets to that model's default, not to yours.
|
||||
|
||||
Ask your human partner to add a machine-level backstop to
|
||||
`~/.codex/config.toml` so any spawn that slips through still routes to
|
||||
a deliberate tier instead of silently inheriting the session's most
|
||||
expensive model:
|
||||
|
||||
```toml
|
||||
[agents]
|
||||
default_subagent_model = "<a mid-tier model from your spawn allowlist>"
|
||||
default_subagent_reasoning_effort = "medium"
|
||||
```
|
||||
|
||||
## Environment Detection
|
||||
|
||||
Skills that create worktrees or finish branches should detect their
|
||||
environment with read-only git commands before proceeding:
|
||||
|
||||
```bash
|
||||
GIT_DIR=$(cd "$(git rev-parse --git-dir)" 2>/dev/null && pwd -P)
|
||||
GIT_COMMON=$(cd "$(git rev-parse --git-common-dir)" 2>/dev/null && pwd -P)
|
||||
BRANCH=$(git branch --show-current)
|
||||
```
|
||||
|
||||
- `GIT_DIR != GIT_COMMON` → already in a linked worktree (skip creation)
|
||||
- `BRANCH` empty → detached HEAD (cannot branch/push/PR from sandbox)
|
||||
|
||||
See `using-git-worktrees` Step 0 and `finishing-a-development-branch`
|
||||
Step 1 for how each skill uses these signals.
|
||||
|
||||
## Codex App Finishing
|
||||
|
||||
When the sandbox blocks branch/push operations (detached HEAD in an
|
||||
externally managed worktree), the agent commits all work and informs
|
||||
the user to use the App's native controls:
|
||||
|
||||
- **"Create branch"** — names the branch, then commit/push/PR via App UI
|
||||
- **"Hand off to local"** — transfers work to the user's local checkout
|
||||
|
||||
The agent can still run tests, stage files, and output suggested branch
|
||||
names, commit messages, and PR descriptions for the user to copy.
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
# Gemini CLI Tool Mapping
|
||||
|
||||
Skills speak in actions ("dispatch a subagent", "create a todo", "read a file"). On Gemini CLI these resolve to the tools below.
|
||||
|
||||
| Action skills request | Gemini CLI equivalent |
|
||||
|----------------------|----------------------|
|
||||
| Read a file | `read_file` |
|
||||
| Read multiple files at once | `read_many_files` |
|
||||
| Create a new file | `write_file` |
|
||||
| Edit a file | `replace` |
|
||||
| Run a shell command | `run_shell_command` |
|
||||
| Search file contents | `grep_search` |
|
||||
| Find files by name | `glob` |
|
||||
| List files and subdirectories | `list_directory` |
|
||||
| Fetch a URL | `web_fetch` |
|
||||
| Search the web | `google_web_search` |
|
||||
| Invoke a skill | `activate_skill` |
|
||||
| Dispatch a subagent (`Subagent (general-purpose):` template) | `invoke_agent` with `agent_name: "generalist"` (invocable via `@generalist` chat syntax — see [Subagent support](#subagent-support)) |
|
||||
| Multiple parallel dispatches | Multiple `invoke_agent` calls in the same response |
|
||||
| Task tracking ("create a todo", "mark complete") | `write_todos` (statuses: pending, in_progress, completed, cancelled, blocked) |
|
||||
|
||||
## Instructions file
|
||||
|
||||
When a skill mentions "your instructions file", on Gemini CLI this is **`GEMINI.md`**. Gemini CLI loads `GEMINI.md` hierarchically: global at `~/.gemini/GEMINI.md`, project-level files in workspace directories and their ancestors, and sub-directory `GEMINI.md` files when a tool accesses files in those directories.
|
||||
|
||||
## Personal skills directory
|
||||
|
||||
User-level skills live at **`~/.gemini/skills/`**, with **`~/.agents/skills/`** as a cross-runtime alias (shared with Codex and Copilot CLI). When both directories exist at the same scope, `.agents/skills/` takes precedence. Each skill is a subdirectory containing a `SKILL.md` (with `name` and `description` frontmatter).
|
||||
|
||||
## Subagent support
|
||||
|
||||
Gemini CLI dispatches subagents through the `invoke_agent` tool, which takes `agent_name` and `prompt` parameters. The same dispatch is also surfaced as a chat-syntax shortcut: typing `@generalist <prompt>` is equivalent to calling `invoke_agent` with `agent_name: "generalist"`. Built-in agent names include `generalist`, `cli_help`, `codebase_investigator`, and (with browser tooling enabled) `browser_agent`.
|
||||
|
||||
Skills dispatch with `Subagent (general-purpose):` and either reference a prompt-template file (e.g., `superpowers:subagent-driven-development`'s `./implementer-prompt.md`) or supply an inline prompt. On Gemini CLI:
|
||||
|
||||
| Skill dispatch form | Gemini CLI equivalent |
|
||||
|---------------------|----------------------|
|
||||
| References a `*-prompt.md` template (implementer, task-reviewer, code-reviewer, etc.) | Fill the template, then `invoke_agent` with `agent_name: "generalist"` and the filled prompt |
|
||||
| References `superpowers:requesting-code-review`'s `./code-reviewer.md` | `invoke_agent` with `agent_name: "generalist"` and the filled review template |
|
||||
| Inline prompt (no template referenced) | `invoke_agent` with `agent_name: "generalist"` and your inline prompt |
|
||||
|
||||
### Prompt filling
|
||||
|
||||
Skills provide prompt templates with placeholders like `{WHAT_WAS_IMPLEMENTED}` or `[FULL TEXT of task]`. Fill all placeholders before passing the complete prompt to `invoke_agent`. The prompt template itself contains the agent's role, review criteria, and expected output format — the subagent will follow it.
|
||||
|
||||
### Parallel dispatch
|
||||
|
||||
Gemini CLI supports parallel subagent dispatch. Issue multiple `invoke_agent` calls in the same response (or multiple `@generalist` invocations in one prompt) to run independent subagent work in parallel. Keep dependent tasks sequential, but do not serialize independent subagent tasks just to preserve a simpler history.
|
||||
|
||||
## Additional Gemini CLI tools
|
||||
|
||||
These tools are unique to Gemini CLI:
|
||||
|
||||
| Tool | Purpose |
|
||||
|------|---------|
|
||||
| `save_memory` (legacy) | Persist facts across sessions when `experimental.memoryV2 = false` |
|
||||
| `get_internal_docs` | Look up Gemini CLI's bundled documentation |
|
||||
| `ask_user` | Pose structured questions to the user (text / single-select / multi-select) |
|
||||
| `enter_plan_mode` / `exit_plan_mode` | Switch into and out of read-only plan mode |
|
||||
| `update_topic` | Update the current conversation's topic / strategic-intent metadata |
|
||||
| `complete_task` | Signal that a Gemini subagent has completed and return its result to the parent agent |
|
||||
| `tracker_create_task`, `tracker_update_task`, `tracker_get_task`, `tracker_list_tasks`, `tracker_add_dependency`, `tracker_visualize` | Rich task tracker with dependency and visualization support |
|
||||
| `read_mcp_resource`, `list_mcp_resources` | MCP resource access |
|
||||
+56
@@ -0,0 +1,56 @@
|
||||
# Hermes Agent Tool Mapping
|
||||
|
||||
Skills speak in actions ("dispatch a subagent", "create a todo", "read a file"). On Hermes Agent these resolve to the tools below.
|
||||
|
||||
## Tools
|
||||
|
||||
| Action skills request | Hermes tool |
|
||||
|---|---|
|
||||
| Read a file | `read_file` |
|
||||
| Create a new file | `write_file` |
|
||||
| Edit a file (targeted patch) | `patch` |
|
||||
| Run a shell command | `terminal` |
|
||||
| Search file contents | `search_files` |
|
||||
| Find files by name | `terminal` with `find` |
|
||||
| Fetch a URL / read a webpage | `web_extract(urls=[...])` |
|
||||
| Search the web | `web_search(query=...)` |
|
||||
| Dispatch a subagent | `delegate_task(goal=..., context=..., toolsets=[...], role="leaf")` |
|
||||
| Task tracking | `todo` tool |
|
||||
| Invoke a skill | `skill_view("skill-name")` |
|
||||
|
||||
## Instructions file
|
||||
|
||||
When a skill mentions "your instructions file," on Hermes Agent this is **`AGENTS.md`** in the project directory, or **`SOUL.md`** globally at `~/.hermes/SOUL.md`.
|
||||
|
||||
## Invoking a skill
|
||||
|
||||
Hermes Agent has a `skills` toolset with `skill_view` and `skills_list` tools.
|
||||
To invoke a superpowers skill, use:
|
||||
|
||||
```
|
||||
skill_view("brainstorming")
|
||||
skill_view("test-driven-development")
|
||||
```
|
||||
|
||||
If `skill_view` cannot find a superpowers skill (it may not appear in the catalog
|
||||
until the plugin fully registers it), fall back to reading the SKILL.md directly:
|
||||
|
||||
```
|
||||
read_file(path="~/.hermes/plugins/superpowers/skills/<skill-name>/SKILL.md")
|
||||
```
|
||||
|
||||
This fallback is the same mechanism used by other harnesses without native skill loading.
|
||||
|
||||
## Subagent dispatch
|
||||
|
||||
Use `delegate_task` to spawn isolated subagents for parallel or sequential workstreams:
|
||||
|
||||
```
|
||||
delegate_task(goal="...", context="...", toolsets=[...], role="leaf")
|
||||
```
|
||||
|
||||
If `delegate_task` is unavailable, do the work inline rather than inventing tool calls.
|
||||
|
||||
## Task tracking
|
||||
|
||||
Use the `todo` tool for task tracking within a session. For multi-agent task boards, use `hermes kanban` CLI if available. Treat older `TodoWrite` references as the task-tracking action.
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
# Muse Tool Mapping
|
||||
|
||||
Skills speak in actions ("dispatch a subagent", "create a todo", "read a file"). On Muse these resolve to the tools below.
|
||||
|
||||
| Action skills request | Muse equivalent |
|
||||
|----------------------|----------------|
|
||||
| Read a file | `read_file` |
|
||||
| Read multiple files | `read_file` (call multiple times) or `search` |
|
||||
| Create a new file | `write_file` |
|
||||
| Edit a file | `edit_file` |
|
||||
| Run a shell command | `bash` |
|
||||
| Search file contents | `search` |
|
||||
| Find files by name | `search` with `glob` |
|
||||
| Fetch a URL | `web_fetch` |
|
||||
| Search the web | `web_search` |
|
||||
| Invoke a skill | `read_file` on `skills/<name>/SKILL.md` or native skill tool |
|
||||
| Dispatch a subagent (`Subagent (general-purpose):` template) | `subagent_spawn` with prompt filling |
|
||||
| Task tracking ("create a todo", "mark complete") | `write_todos` or `bash` task file |
|
||||
| Ask the user a question | `request_user_input` |
|
||||
|
||||
## Instructions file
|
||||
|
||||
When a skill mentions "your instructions file", on Muse this is **`CLAUDE.md`** or **`AGENTS.md`** in the project root. Muse loads these hierarchically where configured.
|
||||
|
||||
## Skill invocation
|
||||
|
||||
Muse has native skill support via `muse skills`. To invoke a Superpowers skill, read its `SKILL.md` and follow the instructions. The bootstrap (`using-superpowers`) is injected automatically at `SessionStart` via the plugin hook — you are already following it, do not re-load it.
|
||||
|
||||
## Subagent dispatch
|
||||
|
||||
Use `subagent_spawn` to delegate work to isolated subagents. Fill prompt templates (e.g., `implementer-prompt.md`, `task-reviewer-prompt.md`) before dispatching. If no subagent tool is available, do the work inline rather than inventing tool calls.
|
||||
|
||||
## Task tracking
|
||||
|
||||
Use `write_todos` for checklist tracking. Create one todo per skill checklist item, mark in_progress/completed as you go. If `write_todos` is unavailable, maintain a markdown task file via `write_file`/`edit_file`.
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
# Pi Tool Mapping
|
||||
|
||||
Skills speak in actions ("dispatch a subagent", "create a todo", "read a file"). On Pi these resolve to the tools below.
|
||||
|
||||
| Action skills request | Pi equivalent |
|
||||
| --- | --- |
|
||||
| Dispatch a subagent (`Subagent (general-purpose):` template) | Use an installed subagent tool such as `subagent` from `pi-subagents` if available |
|
||||
| Task tracking ("create a todo", "mark complete") | Use an installed todo/task tool if available, otherwise track tasks in the plan or `TODO.md` |
|
||||
|
||||
## Subagents
|
||||
|
||||
Pi core does not ship a standard subagent tool. The `pi-subagents` package is a strong optional companion and provides a `subagent` tool with single-agent, chain, parallel, async, forked-context, and resume/status workflows. If no subagent tool is available, do not fabricate `Task` calls; execute sequentially in the current session or explain that the optional subagent capability is not installed.
|
||||
|
||||
## Task lists
|
||||
|
||||
Pi core does not ship a standard task-list tool. If a todo/task extension is installed, use its documented tool. Otherwise use Superpowers plan files, checklists in Markdown, or a repo-local `TODO.md` for task tracking. Older Superpowers docs may refer to `TodoWrite`; treat that as the task-tracking action above.
|
||||
@@ -36,6 +36,7 @@
|
||||
"*(*": "deny",
|
||||
"*)*": "deny",
|
||||
"* -p*": "deny",
|
||||
"*\t-p*": "deny",
|
||||
"*--patch*": "deny",
|
||||
"*--full-diff*": "deny",
|
||||
"*--textconv*": "deny"
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
"*(*": "deny",
|
||||
"*)*": "deny",
|
||||
"* -p*": "deny",
|
||||
"*\t-p*": "deny",
|
||||
"*--patch*": "deny",
|
||||
"*--full-diff*": "deny",
|
||||
"*--textconv*": "deny"
|
||||
|
||||
+1
@@ -38,6 +38,7 @@
|
||||
"*(*": "deny",
|
||||
"*)*": "deny",
|
||||
"* -p*": "deny",
|
||||
"*\t-p*": "deny",
|
||||
"*--patch*": "deny",
|
||||
"*--full-diff*": "deny",
|
||||
"*--textconv*": "deny"
|
||||
|
||||
@@ -45,6 +45,7 @@
|
||||
"*(*": "deny",
|
||||
"*)*": "deny",
|
||||
"* -p*": "deny",
|
||||
"*\t-p*": "deny",
|
||||
"*--patch*": "deny",
|
||||
"*--full-diff*": "deny",
|
||||
"*--textconv*": "deny"
|
||||
|
||||
+1
@@ -36,6 +36,7 @@
|
||||
"*(*": "deny",
|
||||
"*)*": "deny",
|
||||
"* -p*": "deny",
|
||||
"*\t-p*": "deny",
|
||||
"*--patch*": "deny",
|
||||
"*--full-diff*": "deny",
|
||||
"*--textconv*": "deny"
|
||||
|
||||
+1
@@ -43,6 +43,7 @@
|
||||
"*(*": "deny",
|
||||
"*)*": "deny",
|
||||
"* -p*": "deny",
|
||||
"*\t-p*": "deny",
|
||||
"*--patch*": "deny",
|
||||
"*--full-diff*": "deny",
|
||||
"*--textconv*": "deny"
|
||||
|
||||
@@ -31,6 +31,7 @@ profiles:
|
||||
- heretek-shared:writing-plans
|
||||
- heretek-shared:executing-plans
|
||||
- heretek-shared:subagent-driven-development
|
||||
- heretek-shared:using-superpowers
|
||||
- madr-architecture-decision
|
||||
guidance: []
|
||||
subagents: []
|
||||
|
||||
@@ -44,6 +44,7 @@ Load a skill by reading its SKILL.md when the task matches its description.
|
||||
- `writing-plans`
|
||||
- `executing-plans`
|
||||
- `subagent-driven-development`
|
||||
- `using-superpowers`
|
||||
- `madr-architecture-decision`
|
||||
|
||||
## 6. Coordination on openrig
|
||||
|
||||
+1
@@ -45,6 +45,7 @@
|
||||
"*(*": "deny",
|
||||
"*)*": "deny",
|
||||
"* -p*": "deny",
|
||||
"*\t-p*": "deny",
|
||||
"*--patch*": "deny",
|
||||
"*--full-diff*": "deny",
|
||||
"*--textconv*": "deny"
|
||||
|
||||
Loaded 100 of 439 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user