agemon 0.1.0 → 6.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +983 -30
- package/assets/skills/architecture/agemon-architecture/LICENSE +21 -0
- package/assets/skills/architecture/agemon-architecture/NOTICE.md +9 -0
- package/assets/skills/architecture/agemon-architecture/SKILL.md +275 -0
- package/assets/skills/code-quality/agemon-clean-code/LICENSE +21 -0
- package/assets/skills/code-quality/agemon-clean-code/NOTICE.md +9 -0
- package/assets/skills/code-quality/agemon-clean-code/SKILL.md +78 -0
- package/assets/skills/code-quality/agemon-house-rules/SKILL.md +103 -0
- package/assets/skills/commit/agemon-commit/SKILL.md +87 -0
- package/assets/skills/design/agemon-design/LICENSE +21 -0
- package/assets/skills/design/agemon-design/NOTICE.md +43 -0
- package/assets/skills/design/agemon-design/SKILL.md +128 -0
- package/assets/skills/design/agemon-design/references/accessibility.md +182 -0
- package/assets/skills/design/agemon-design/references/actions.md +215 -0
- package/assets/skills/design/agemon-design/references/ai-chat.md +158 -0
- package/assets/skills/design/agemon-design/references/brief.md +190 -0
- package/assets/skills/design/agemon-design/references/color.md +216 -0
- package/assets/skills/design/agemon-design/references/components.md +91 -0
- package/assets/skills/design/agemon-design/references/copy.md +300 -0
- package/assets/skills/design/agemon-design/references/core-rules.md +166 -0
- package/assets/skills/design/agemon-design/references/craft-intent.md +162 -0
- package/assets/skills/design/agemon-design/references/dashboard.md +131 -0
- package/assets/skills/design/agemon-design/references/dataviz.md +197 -0
- package/assets/skills/design/agemon-design/references/finish-bar.md +243 -0
- package/assets/skills/design/agemon-design/references/forms.md +192 -0
- package/assets/skills/design/agemon-design/references/heuristics.md +319 -0
- package/assets/skills/design/agemon-design/references/inspiration.md +287 -0
- package/assets/skills/design/agemon-design/references/layout.md +236 -0
- package/assets/skills/design/agemon-design/references/loops.md +155 -0
- package/assets/skills/design/agemon-design/references/metadata.md +98 -0
- package/assets/skills/design/agemon-design/references/modern-css.md +448 -0
- package/assets/skills/design/agemon-design/references/motion.md +434 -0
- package/assets/skills/design/agemon-design/references/personas.md +206 -0
- package/assets/skills/design/agemon-design/references/preset-dashboard.md +109 -0
- package/assets/skills/design/agemon-design/references/preset-editorial.md +94 -0
- package/assets/skills/design/agemon-design/references/preset-minimal.md +93 -0
- package/assets/skills/design/agemon-design/references/principles-catalog.md +299 -0
- package/assets/skills/design/agemon-design/references/recipe-auth.md +88 -0
- package/assets/skills/design/agemon-design/references/recipe-dashboard.md +130 -0
- package/assets/skills/design/agemon-design/references/recipe-landing.md +120 -0
- package/assets/skills/design/agemon-design/references/responsive.md +168 -0
- package/assets/skills/design/agemon-design/references/review.md +340 -0
- package/assets/skills/design/agemon-design/references/routing.md +143 -0
- package/assets/skills/design/agemon-design/references/sound.md +150 -0
- package/assets/skills/design/agemon-design/references/spec.md +123 -0
- package/assets/skills/design/agemon-design/references/stack.md +522 -0
- package/assets/skills/design/agemon-design/references/stage-assets.md +106 -0
- package/assets/skills/design/agemon-design/references/stage-build.md +46 -0
- package/assets/skills/design/agemon-design/references/stage-critique.md +34 -0
- package/assets/skills/design/agemon-design/references/stage-directions.md +44 -0
- package/assets/skills/design/agemon-design/references/stage-intake.md +34 -0
- package/assets/skills/design/agemon-design/references/stage-verify.md +44 -0
- package/assets/skills/design/agemon-design/references/state-design.md +188 -0
- package/assets/skills/design/agemon-design/references/tells-2026-11.md +32 -0
- package/assets/skills/design/agemon-design/references/themes.md +233 -0
- package/assets/skills/design/agemon-design/references/third-party-licenses.md +323 -0
- package/assets/skills/design/agemon-design/references/tokens.md +350 -0
- package/assets/skills/design/agemon-design/references/typography.md +248 -0
- package/assets/skills/design/agemon-design/scripts/audit-page.js +532 -0
- package/assets/skills/design/agemon-design/scripts/check-source.mjs +358 -0
- package/assets/skills/design/agemon-design/scripts/deal.mjs +231 -0
- package/assets/skills/design/agemon-design/scripts/inventory.mjs +676 -0
- package/assets/skills/essentials/web-design-guidelines/LICENSE +21 -0
- package/assets/skills/essentials/web-design-guidelines/NOTICE.md +14 -0
- package/assets/skills/essentials/web-design-guidelines/SKILL.md +18 -0
- package/assets/skills/essentials/web-design-guidelines/references/guidelines.md +184 -0
- package/assets/skills/essentials/writing-guidelines/LICENSE +21 -0
- package/assets/skills/essentials/writing-guidelines/NOTICE.md +14 -0
- package/assets/skills/essentials/writing-guidelines/SKILL.md +18 -0
- package/assets/skills/essentials/writing-guidelines/references/guidelines.md +250 -0
- package/assets/skills/founder/agemon-founder-board/LICENSE +21 -0
- package/assets/skills/founder/agemon-founder-board/NOTICE.md +11 -0
- package/assets/skills/founder/agemon-founder-board/SKILL.md +111 -0
- package/assets/skills/founder/agemon-founder-board/lenses.md +84 -0
- package/assets/skills/founder/agemon-founder-brand/LICENSE +21 -0
- package/assets/skills/founder/agemon-founder-brand/NOTICE.md +12 -0
- package/assets/skills/founder/agemon-founder-brand/SKILL.md +77 -0
- package/assets/skills/founder/agemon-founder-cfo/LICENSE +21 -0
- package/assets/skills/founder/agemon-founder-cfo/NOTICE.md +12 -0
- package/assets/skills/founder/agemon-founder-cfo/SKILL.md +109 -0
- package/assets/skills/founder/agemon-founder-cfo/example.json +27 -0
- package/assets/skills/founder/agemon-founder-cfo/unit_economics.py +270 -0
- package/assets/skills/founder/agemon-founder-competitors/LICENSE +21 -0
- package/assets/skills/founder/agemon-founder-competitors/NOTICE.md +12 -0
- package/assets/skills/founder/agemon-founder-competitors/SKILL.md +84 -0
- package/assets/skills/founder/agemon-founder-consumer/LICENSE +21 -0
- package/assets/skills/founder/agemon-founder-consumer/NOTICE.md +11 -0
- package/assets/skills/founder/agemon-founder-consumer/SKILL.md +126 -0
- package/assets/skills/founder/agemon-founder-consumer/customer.example.json +34 -0
- package/assets/skills/founder/agemon-founder-consumer/panel.py +424 -0
- package/assets/skills/founder/agemon-founder-consumer/pitch.example.md +3 -0
- package/assets/skills/founder/agemon-founder-launch/LICENSE +21 -0
- package/assets/skills/founder/agemon-founder-launch/NOTICE.md +11 -0
- package/assets/skills/founder/agemon-founder-launch/SKILL.md +65 -0
- package/assets/skills/founder/agemon-founder-marketing/LICENSE +21 -0
- package/assets/skills/founder/agemon-founder-marketing/NOTICE.md +11 -0
- package/assets/skills/founder/agemon-founder-marketing/SKILL.md +80 -0
- package/assets/skills/founder/agemon-founder-offer/LICENSE +21 -0
- package/assets/skills/founder/agemon-founder-offer/NOTICE.md +11 -0
- package/assets/skills/founder/agemon-founder-offer/SKILL.md +75 -0
- package/assets/skills/founder/agemon-founder-ops/LICENSE +21 -0
- package/assets/skills/founder/agemon-founder-ops/NOTICE.md +12 -0
- package/assets/skills/founder/agemon-founder-ops/SKILL.md +77 -0
- package/assets/skills/founder/agemon-founder-plan/LICENSE +21 -0
- package/assets/skills/founder/agemon-founder-plan/NOTICE.md +11 -0
- package/assets/skills/founder/agemon-founder-plan/SKILL.md +88 -0
- package/assets/skills/founder/agemon-founder-plan/compile.py +178 -0
- package/assets/skills/founder/agemon-founder-pricing/LICENSE +21 -0
- package/assets/skills/founder/agemon-founder-pricing/NOTICE.md +12 -0
- package/assets/skills/founder/agemon-founder-pricing/SKILL.md +92 -0
- package/assets/skills/founder/agemon-founder-pricing/van_westendorp.py +172 -0
- package/assets/skills/geo-seo/geo/LICENSE +21 -0
- package/assets/skills/geo-seo/geo/NOTICE.md +18 -0
- package/assets/skills/geo-seo/geo/SKILL.md +145 -0
- package/assets/skills/geo-seo/geo-audit/LICENSE +21 -0
- package/assets/skills/geo-seo/geo-audit/NOTICE.md +17 -0
- package/assets/skills/geo-seo/geo-audit/SKILL.md +371 -0
- package/assets/skills/geo-seo/geo-audit/references/ai-visibility.md +233 -0
- package/assets/skills/geo-seo/geo-audit/references/content.md +329 -0
- package/assets/skills/geo-seo/geo-audit/references/platform-analysis.md +294 -0
- package/assets/skills/geo-seo/geo-audit/references/schema.md +383 -0
- package/assets/skills/geo-seo/geo-audit/references/technical.md +368 -0
- package/assets/skills/geo-seo/geo-brand-mentions/LICENSE +21 -0
- package/assets/skills/geo-seo/geo-brand-mentions/NOTICE.md +15 -0
- package/assets/skills/geo-seo/geo-brand-mentions/SKILL.md +459 -0
- package/assets/skills/geo-seo/geo-citability/LICENSE +21 -0
- package/assets/skills/geo-seo/geo-citability/NOTICE.md +14 -0
- package/assets/skills/geo-seo/geo-citability/SKILL.md +320 -0
- package/assets/skills/geo-seo/geo-content/LICENSE +21 -0
- package/assets/skills/geo-seo/geo-content/NOTICE.md +14 -0
- package/assets/skills/geo-seo/geo-content/SKILL.md +352 -0
- package/assets/skills/geo-seo/geo-crawlers/LICENSE +21 -0
- package/assets/skills/geo-seo/geo-crawlers/NOTICE.md +15 -0
- package/assets/skills/geo-seo/geo-crawlers/SKILL.md +388 -0
- package/assets/skills/geo-seo/geo-llmstxt/LICENSE +21 -0
- package/assets/skills/geo-seo/geo-llmstxt/NOTICE.md +14 -0
- package/assets/skills/geo-seo/geo-llmstxt/SKILL.md +433 -0
- package/assets/skills/geo-seo/geo-platform-optimizer/LICENSE +21 -0
- package/assets/skills/geo-seo/geo-platform-optimizer/NOTICE.md +14 -0
- package/assets/skills/geo-seo/geo-platform-optimizer/SKILL.md +282 -0
- package/assets/skills/geo-seo/geo-report/LICENSE +21 -0
- package/assets/skills/geo-seo/geo-report/NOTICE.md +14 -0
- package/assets/skills/geo-seo/geo-report/SKILL.md +406 -0
- package/assets/skills/geo-seo/geo-report-pdf/LICENSE +21 -0
- package/assets/skills/geo-seo/geo-report-pdf/NOTICE.md +20 -0
- package/assets/skills/geo-seo/geo-report-pdf/SKILL.md +153 -0
- package/assets/skills/geo-seo/geo-report-pdf/templates/geo-report-template.html +548 -0
- package/assets/skills/geo-seo/geo-schema/LICENSE +21 -0
- package/assets/skills/geo-seo/geo-schema/NOTICE.md +16 -0
- package/assets/skills/geo-seo/geo-schema/SKILL.md +396 -0
- package/assets/skills/geo-seo/geo-technical/LICENSE +21 -0
- package/assets/skills/geo-seo/geo-technical/NOTICE.md +15 -0
- package/assets/skills/geo-seo/geo-technical/SKILL.md +566 -0
- package/assets/skills/output-style/agemon-adhd/LICENSE +21 -0
- package/assets/skills/output-style/agemon-adhd/NOTICE.md +13 -0
- package/assets/skills/output-style/agemon-adhd/SKILL.md +138 -0
- package/assets/skills/performance/agemon-performance/NOTICE.md +1 -0
- package/assets/skills/performance/agemon-performance/SKILL.md +76 -0
- package/assets/skills/security/agemon-security/LICENSE +21 -0
- package/assets/skills/security/agemon-security/NOTICE.md +8 -0
- package/assets/skills/security/agemon-security/SKILL.md +356 -0
- package/assets/skills/security/agemon-security-audit/AI-AND-LLM.md +83 -0
- package/assets/skills/security/agemon-security-audit/ATTACK-CLASSES.md +130 -0
- package/assets/skills/security/agemon-security-audit/CLIENT-SIDE.md +83 -0
- package/assets/skills/security/agemon-security-audit/CLOUD-AND-DEPLOYMENT.md +86 -0
- package/assets/skills/security/agemon-security-audit/DATA-ISOLATION-AND-LIFECYCLE.md +84 -0
- package/assets/skills/security/agemon-security-audit/DESKTOP-MOBILE-AND-LOCAL-IPC.md +89 -0
- package/assets/skills/security/agemon-security-audit/HUNTING.md +251 -0
- package/assets/skills/security/agemon-security-audit/LICENSE +21 -0
- package/assets/skills/security/agemon-security-audit/MEMORY-SAFETY-AND-BINARY.md +101 -0
- package/assets/skills/security/agemon-security-audit/NOTICE.md +12 -0
- package/assets/skills/security/agemon-security-audit/PROTOCOLS-RPC-AND-MESSAGING.md +81 -0
- package/assets/skills/security/agemon-security-audit/RECONNAISSANCE.md +156 -0
- package/assets/skills/security/agemon-security-audit/RESOURCE-EXHAUSTION-AND-AVAILABILITY.md +78 -0
- package/assets/skills/security/agemon-security-audit/SKILL.md +192 -0
- package/assets/skills/security/agemon-security-audit/SUPPLY-CHAIN-AND-RELEASE.md +73 -0
- package/assets/skills/security/agemon-security-audit/VALIDATION-AND-REPORTING.md +186 -0
- package/assets/skills/security/agemon-security-audit/WEB-PROTOCOL-AND-AUTH.md +105 -0
- package/assets/skills/security/agemon-security-audit/report-schema.json +461 -0
- package/assets/skills/security/agemon-security-audit/validate-coverage-ledger.cjs +872 -0
- package/assets/skills/security/agemon-security-audit/validate-findings.cjs +773 -0
- package/assets/skills/self-review/agemon-review-intake/LICENSE +21 -0
- package/assets/skills/self-review/agemon-review-intake/NOTICE.md +9 -0
- package/assets/skills/self-review/agemon-review-intake/SKILL.md +205 -0
- package/assets/skills/self-review/agemon-review-request/LICENSE +21 -0
- package/assets/skills/self-review/agemon-review-request/NOTICE.md +9 -0
- package/assets/skills/self-review/agemon-review-request/SKILL.md +104 -0
- package/assets/skills/self-review/agemon-review-request/code-reviewer.md +188 -0
- package/assets/skills/self-review/agemon-root-cause/LICENSE +21 -0
- package/assets/skills/self-review/agemon-root-cause/NOTICE.md +10 -0
- package/assets/skills/self-review/agemon-root-cause/SKILL.md +283 -0
- package/assets/skills/self-review/agemon-root-cause/condition-based-waiting-example.ts +158 -0
- package/assets/skills/self-review/agemon-root-cause/condition-based-waiting.md +115 -0
- package/assets/skills/self-review/agemon-root-cause/defense-in-depth.md +122 -0
- package/assets/skills/self-review/agemon-root-cause/find-polluter.sh +72 -0
- package/assets/skills/self-review/agemon-root-cause/root-cause-tracing.md +169 -0
- package/assets/skills/self-review/agemon-root-cause/test-academic.md +14 -0
- package/assets/skills/self-review/agemon-root-cause/test-pressure-1.md +58 -0
- package/assets/skills/self-review/agemon-root-cause/test-pressure-2.md +68 -0
- package/assets/skills/self-review/agemon-root-cause/test-pressure-3.md +69 -0
- package/assets/skills/self-review/agemon-verify-before-done/LICENSE +21 -0
- package/assets/skills/self-review/agemon-verify-before-done/NOTICE.md +9 -0
- package/assets/skills/self-review/agemon-verify-before-done/SKILL.md +120 -0
- package/assets/skills/team-lead/agemon-plan-rfc/SKILL.md +317 -0
- package/assets/skills/team-lead/prd-generator/SKILL.md +437 -0
- package/assets/skills/team-lead/skill-headofit-audit/SKILL.md +72 -0
- package/assets/skills/team-lead/skill-incident-rca/SKILL.md +66 -0
- package/assets/skills/team-lead/skill-meeting-lifecycle/SKILL.md +63 -0
- package/assets/skills/team-lead/skill-obsidian-vault-sync/SKILL.md +69 -0
- package/assets/skills/team-lead/skill-prd-decomposer/SKILL.md +71 -0
- package/assets/skills/team-lead/skill-sec-check/SKILL.md +70 -0
- package/assets/skills/team-lead/skill-task-extractor/SKILL.md +79 -0
- package/assets/skills/team-lead/skill-tech-spike/SKILL.md +57 -0
- package/assets/skills/team-lead/skill-techlead-reviewer/SKILL.md +81 -0
- package/assets/skills/workflow/agemon-brainstorming/LICENSE +21 -0
- package/assets/skills/workflow/agemon-brainstorming/NOTICE.md +14 -0
- package/assets/skills/workflow/agemon-brainstorming/SKILL.md +287 -0
- package/assets/skills/workflow/agemon-brainstorming/builder-check-prompt.md +23 -0
- package/assets/skills/workflow/agemon-dispatching-parallel-agents/LICENSE +21 -0
- package/assets/skills/workflow/agemon-dispatching-parallel-agents/NOTICE.md +13 -0
- package/assets/skills/workflow/agemon-dispatching-parallel-agents/SKILL.md +167 -0
- package/assets/skills/workflow/agemon-executing-plans/LICENSE +21 -0
- package/assets/skills/workflow/agemon-executing-plans/NOTICE.md +15 -0
- package/assets/skills/workflow/agemon-executing-plans/SKILL.md +322 -0
- package/assets/skills/workflow/agemon-executing-plans/scripts/task-done +55 -0
- package/assets/skills/workflow/agemon-executing-plans/scripts/task-start +32 -0
- package/assets/skills/workflow/agemon-finishing-a-development-branch/LICENSE +21 -0
- package/assets/skills/workflow/agemon-finishing-a-development-branch/NOTICE.md +13 -0
- package/assets/skills/workflow/agemon-finishing-a-development-branch/SKILL.md +225 -0
- package/assets/skills/workflow/agemon-subagent-driven-development/LICENSE +21 -0
- package/assets/skills/workflow/agemon-subagent-driven-development/NOTICE.md +15 -0
- package/assets/skills/workflow/agemon-subagent-driven-development/SKILL.md +339 -0
- package/assets/skills/workflow/agemon-subagent-driven-development/code-reviewer.md +198 -0
- package/assets/skills/workflow/agemon-subagent-driven-development/implementer-prompt.md +154 -0
- package/assets/skills/workflow/agemon-subagent-driven-development/re-review-prompt.md +116 -0
- package/assets/skills/workflow/agemon-subagent-driven-development/references/batching.md +11 -0
- package/assets/skills/workflow/agemon-subagent-driven-development/references/cannot-verify.md +10 -0
- package/assets/skills/workflow/agemon-subagent-driven-development/references/final-review.md +49 -0
- package/assets/skills/workflow/agemon-subagent-driven-development/references/fix-loop.md +77 -0
- package/assets/skills/workflow/agemon-subagent-driven-development/references/handling-reports.md +15 -0
- package/assets/skills/workflow/agemon-subagent-driven-development/references/preflight.md +26 -0
- package/assets/skills/workflow/agemon-subagent-driven-development/references/resuming.md +12 -0
- package/assets/skills/workflow/agemon-subagent-driven-development/references/role-scout.md +18 -0
- package/assets/skills/workflow/agemon-subagent-driven-development/references/role-worker.md +19 -0
- package/assets/skills/workflow/agemon-subagent-driven-development/scripts/review-package +64 -0
- package/assets/skills/workflow/agemon-subagent-driven-development/scripts/sdd-repo +54 -0
- package/assets/skills/workflow/agemon-subagent-driven-development/scripts/sdd-workspace +110 -0
- package/assets/skills/workflow/agemon-subagent-driven-development/scripts/task-brief +108 -0
- package/assets/skills/workflow/agemon-subagent-driven-development/task-reviewer-prompt.md +209 -0
- package/assets/skills/workflow/agemon-test-driven-development/LICENSE +21 -0
- package/assets/skills/workflow/agemon-test-driven-development/NOTICE.md +14 -0
- package/assets/skills/workflow/agemon-test-driven-development/SKILL.md +330 -0
- package/assets/skills/workflow/agemon-test-driven-development/writing-good-tests.md +198 -0
- package/assets/skills/workflow/agemon-using-git-worktrees/LICENSE +21 -0
- package/assets/skills/workflow/agemon-using-git-worktrees/NOTICE.md +13 -0
- package/assets/skills/workflow/agemon-using-git-worktrees/SKILL.md +167 -0
- package/assets/skills/workflow/agemon-writing-plans/LICENSE +21 -0
- package/assets/skills/workflow/agemon-writing-plans/NOTICE.md +13 -0
- package/assets/skills/workflow/agemon-writing-plans/SKILL.md +204 -0
- package/assets/tools/code-review-graph-constraints.txt +1418 -0
- package/assets/tools/package-lock.json +111 -0
- package/assets/tools/package.json +6 -0
- package/dist/chunk-ZZBF3GOV.js +3451 -0
- package/dist/chunk-ZZBF3GOV.js.map +1 -0
- package/dist/fake-subprocess-IV4ML77S.js +636 -0
- package/dist/fake-subprocess-IV4ML77S.js.map +1 -0
- package/dist/index.js +23836 -1945
- package/dist/index.js.map +1 -1
- package/package.json +37 -17
package/README.md
CHANGED
|
@@ -1,30 +1,410 @@
|
|
|
1
1
|
# agemon
|
|
2
2
|
|
|
3
|
+
[](https://github.com/Korak-997/agemon/actions/workflows/ci.yml)
|
|
4
|
+
[](https://github.com/Korak-997/agemon/releases/latest)
|
|
5
|
+
[](https://www.npmjs.com/package/agemon)
|
|
6
|
+
[](https://scorecard.dev/viewer/?uri=github.com/Korak-997/agemon)
|
|
7
|
+
|
|
3
8
|
Bootstrap and reverse an AI coding agent environment in a repository with one CLI.
|
|
4
9
|
|
|
5
10
|
`agemon` installs a curated plugin bundle, tracks all managed actions in a state manifest,
|
|
6
11
|
and can cleanly reverse those actions with `nuke`.
|
|
7
12
|
|
|
13
|
+
Documentation, the skill library and the installer: <https://agemon.korak-kurani.com>.
|
|
14
|
+
|
|
15
|
+

|
|
16
|
+
|
|
17
|
+
## Why agemon
|
|
18
|
+
|
|
19
|
+
- **One command, the same setup everywhere.** Agent rules, skills, subagents, the code
|
|
20
|
+
graph and its daemon land the same way in every repository, pinned to exact versions.
|
|
21
|
+
- **You approve every change first.** agemon shows a plan with diffs, asks before it
|
|
22
|
+
writes, and rolls back the whole run if any step fails.
|
|
23
|
+
- **Fully reversible.** Every change is recorded, and `agemon nuke` removes exactly what
|
|
24
|
+
agemon added, leaving your own files alone.
|
|
25
|
+
- **Works on the web too.** Add agemon's skill groups to claude.ai as plugins, and check a
|
|
26
|
+
repository is ready for Claude Code on the web. See [Claude on the web](#claude-on-the-web).
|
|
27
|
+
|
|
28
|
+
Want to help? Start with [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
29
|
+
|
|
8
30
|
## What It Does
|
|
9
31
|
|
|
10
|
-
|
|
32
|
+
agemon is plugin-driven and runs its plugins in this order:
|
|
11
33
|
|
|
12
34
|
1. `crg`: installs and verifies `code-review-graph`.
|
|
13
|
-
2. `daemon`: registers `
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
35
|
+
2. `daemon`: registers `code-review-graph watch` autostart via `systemd --user` (Linux) or
|
|
36
|
+
a launchd user agent (macOS), under a name derived from the repository's path — see
|
|
37
|
+
[Daemon naming](#daemon-naming).
|
|
38
|
+
3. `skills`: installs bundled skills with a pinned copy of the `skills` CLI. Always installs the `essentials` group;
|
|
39
|
+
additional groups (design, security, code quality, architecture, self-review, performance,
|
|
40
|
+
commit, workflow, output style, founder, team lead, GEO) are selected interactively, via `--skill-groups`, or skipped entirely in a
|
|
41
|
+
non-interactive session — see [Skill Groups](#skill-groups).
|
|
42
|
+
4. `agents`: installs the Claude Code subagents that come with an installed skill group into
|
|
43
|
+
`.claude/agents/` — see [Subagents](#subagents). It depends on `skills`, so `--only agents`
|
|
44
|
+
also runs `skills`.
|
|
45
|
+
5. `subagent-default`: behind consent, sets a default model in `.claude/settings.json` for
|
|
46
|
+
Claude Code subagents that name none — see [Default subagent model](#default-subagent-model).
|
|
47
|
+
6. `cli-tool`: installs bundled global CLI tools.
|
|
48
|
+
7. `master-prompt`: consolidates agent rule files and pointer files.
|
|
18
49
|
|
|
19
50
|
Every mutating plugin action is recorded in `.agemon/state.json` and used by `nuke` for
|
|
20
51
|
targeted reversal.
|
|
21
52
|
|
|
53
|
+
### Re-running against an already-bootstrapped repo
|
|
54
|
+
|
|
55
|
+
Every plugin's `detect` + `verify` runs on each invocation, not just on first install:
|
|
56
|
+
|
|
57
|
+
- Not detected: fresh install, as above.
|
|
58
|
+
- Detected and healthy: reported and left alone — no reinstalling on every run.
|
|
59
|
+
- Detected but `verify` fails (e.g. a daemon stuck crash-looping): agemon reports what's
|
|
60
|
+
currently there and asks whether to rewrite/fix it. `--yes` answers yes automatically;
|
|
61
|
+
a non-interactive session (CI, piped output) answers no automatically and just reports
|
|
62
|
+
the problem, matching the [update check](#update-checks)'s non-interactive behavior.
|
|
63
|
+
|
|
64
|
+
### Skill Groups
|
|
65
|
+
|
|
66
|
+
The `skills` plugin installs one always-on group plus whichever optional groups you select:
|
|
67
|
+
|
|
68
|
+
| Group | Skills | What it covers |
|
|
69
|
+
|---|---|---|
|
|
70
|
+
| `essentials` (always on) | `web-design-guidelines`, `writing-guidelines` | Vercel Labs' web design and writing review guidelines, vendored as copies taken at one pinned upstream commit each. They keep their upstream names — see [Vendored Skills](#vendored-skills--attribution). |
|
|
71
|
+
| `design` | `agemon-design` | A staged UI workflow: it picks a track, reads your real brand and tokens, builds from the product's subject, checks objective facts, and reports what it could not verify. Choosing among three directions is opt-in (`/agemon-design build --directions`) until an eval supports it as a default. Dashboard, editorial and minimal looks are presets it uses when you name them. Limits: auto-triggering cannot be guaranteed, its gates are voluntary without hooks, and a passing run does not mean a good design. |
|
|
72
|
+
| `security` | `agemon-security`, `agemon-security-audit` | Exploit-driven security review — no finding without a working proof-of-concept — plus a multi-agent, multi-phase codebase audit with independently verified findings. |
|
|
73
|
+
| `code-quality` | `agemon-clean-code`, `agemon-house-rules` | Simplicity, DRY architecture, self-documenting naming, surgical scope control. |
|
|
74
|
+
| `architecture` | `agemon-architecture` | Clean Architecture review: dependency rule, layering, boundary crossing, SOLID. |
|
|
75
|
+
| `self-review` | `agemon-verify-before-done`, `agemon-review-intake`, `agemon-review-request`, `agemon-root-cause` | Verification before claiming completion, giving/receiving code review, root-cause debugging. |
|
|
76
|
+
| `performance` | `agemon-performance` | Algorithmic-complexity-first discipline: N+1 detection, hot-loop hygiene, when not to optimize. |
|
|
77
|
+
| `commit` | `agemon-commit` | Staging review, commit message structure, and splitting unrelated changes into separate commits. |
|
|
78
|
+
| `workflow` | `agemon-brainstorming`, `agemon-writing-plans`, `agemon-executing-plans`, `agemon-subagent-driven-development`, `agemon-test-driven-development`, `agemon-using-git-worktrees`, `agemon-dispatching-parallel-agents`, `agemon-finishing-a-development-branch` | Structured feature delivery: brainstorming, written plans, test-driven development, subagent or inline execution, git worktrees, and branch finishing. Comes with the `agemon-scout` and `agemon-worker` [subagents](#subagents). Pairs with `self-review`. |
|
|
79
|
+
| `output-style` | `agemon-adhd` | On request (`/agemon-adhd`), replies lead with the next action, number their steps, restate progress, and skip preamble and tangents. |
|
|
80
|
+
| `founder` | `agemon-founder-board`, `agemon-founder-competitors`, `agemon-founder-consumer`, `agemon-founder-pricing`, `agemon-founder-offer`, `agemon-founder-cfo`, `agemon-founder-marketing`, `agemon-founder-brand`, `agemon-founder-ops`, `agemon-founder-launch`, `agemon-founder-plan` | Test a business idea before launch: board review, competitors, simulated buyer panel, pricing, offer, unit economics, marketing, brand, operations, launch, and a business plan with a computed verdict. The panel is simulated buyers, not customers. The scripts need Python 3.8 or newer. |
|
|
81
|
+
| `teamlead` | `agemon-plan-rfc`, `prd-generator`, `skill-headofit-audit`, `skill-incident-rca`, `skill-meeting-lifecycle`, `skill-obsidian-vault-sync`, `skill-prd-decomposer`, `skill-sec-check`, `skill-task-extractor`, `skill-techlead-reviewer`, `skill-tech-spike` | Team-lead workflows: RFC planning, PRD generation/decomposition, meeting lifecycle, task extraction, tech spikes, IT audits, incident RCA, security checks, tech-lead review, and Obsidian vault sync. |
|
|
82
|
+
| `geo-seo` | `geo` (`/geo audit <url>` and the other `/geo` commands), `geo-audit`, `geo-citability`, `geo-crawlers`, `geo-llmstxt`, `geo-brand-mentions`, `geo-platform-optimizer`, `geo-technical`, `geo-content`, `geo-report`, `geo-schema`, `geo-report-pdf` | GEO (generative engine optimization): audits how likely AI search (ChatGPT, Perplexity, Google AI Overviews) is to find and cite a website — citability, AI crawler access, llms.txt, schema, technical SEO, brand mentions — and writes client-ready reports. Upstream names kept; see [Vendored Skills](#vendored-skills--attribution). |
|
|
83
|
+
|
|
84
|
+
Selection order:
|
|
85
|
+
|
|
86
|
+
- `--skill-groups <ids>`: explicit, non-interactive. Comma-separated group ids, or the keywords
|
|
87
|
+
`all` / `none`. Always includes `essentials` regardless of what you pass.
|
|
88
|
+
- No flag, `--yes`: every group installs, the same way `--yes` answers every other prompt.
|
|
89
|
+
- No flag, interactive terminal: one multiselect over the optional groups (space toggles, enter
|
|
90
|
+
confirms), on top of `essentials`.
|
|
91
|
+
- No flag, non-interactive (CI, piped output, or `--dry-run`): only `essentials` installs —
|
|
92
|
+
pass `--skill-groups` explicitly to get optional groups without a prompt.
|
|
93
|
+
|
|
94
|
+
The group question comes first, while agemon builds the plan, so every group you picked is a
|
|
95
|
+
separate row (`skill-group:<id>`, or `custom-skill-group:<id>` for a project-defined group) in
|
|
96
|
+
the plan, the consent screen and `agemon status`, with each skill and its
|
|
97
|
+
source. Groups you were shown and did not pick are recorded as declined once you approve
|
|
98
|
+
the install gate. Ctrl-C at the question leaves the repository untouched.
|
|
99
|
+
|
|
100
|
+
Re-running `agemon` in a repo only re-verifies the groups that repo already selected — it never
|
|
101
|
+
asks you about, or installs, groups you previously declined, even when `--skill-groups` or
|
|
102
|
+
`skill_groups` names them; `agemon add <group>` installs one. A group added later (to agemon or
|
|
103
|
+
to `agemon.toml`) is installed when `--skill-groups` or `skill_groups` names it; otherwise it is
|
|
104
|
+
offered once in an interactive run. A `--yes` or non-interactive run leaves it waiting and lists
|
|
105
|
+
it. See [What a new version brings to a repository](#what-a-new-version-brings-to-a-repository).
|
|
106
|
+
|
|
107
|
+
#### Subagents
|
|
108
|
+
|
|
109
|
+
Some groups come with Claude Code subagents, which the `agents` capability installs into
|
|
110
|
+
the project's `.claude/agents/` together with the group. Two groups have some:
|
|
111
|
+
|
|
112
|
+
- `geo-seo`: the five audit agents `geo-audit-ai-visibility`, `geo-audit-platform`,
|
|
113
|
+
`geo-audit-technical`, `geo-audit-content` and `geo-audit-schema`, which `/geo audit`
|
|
114
|
+
launches in parallel.
|
|
115
|
+
- `workflow`: two role agents. `agemon-scout` runs on Haiku for read-only search, and
|
|
116
|
+
`agemon-worker` runs on Sonnet for routine implementation and review.
|
|
117
|
+
|
|
118
|
+
How they are set up:
|
|
119
|
+
|
|
120
|
+
- Each agent file has only `name`, `description`, `tools` and `model`. `tools` is an
|
|
121
|
+
allowlist. The GEO agents get `WebFetch`, plus `Bash` (for one fixed, read-only `curl` you
|
|
122
|
+
approve per run) for the technical and schema agents. `agemon-scout` gets `Read`, `Grep` and
|
|
123
|
+
`Glob`. `agemon-worker` also gets `Edit`, `Write` and `Bash`. Nothing is pre-approved, and no
|
|
124
|
+
agent sets a permission mode, hooks or MCP servers.
|
|
125
|
+
- `model` is an alias, so agents follow new model releases. These agent files are written for
|
|
126
|
+
Claude Code, and only Claude Code has been tested with them.
|
|
127
|
+
- The agents have their own consent step, which names every agent with its tools. With
|
|
128
|
+
`--yes`, agemon prints that list instead of asking.
|
|
129
|
+
- Agent files are handled like rule files: an agent you edited is a conflict and is never
|
|
130
|
+
overwritten without a decision (`[conflict_decisions] "agent-file:<name>" = "keep"`,
|
|
131
|
+
`"replace"` or `"skip"`); a replaced file is backed up first; `nuke` removes the agents
|
|
132
|
+
agemon created and restores the files it replaced.
|
|
133
|
+
- An agent's group must be installed for the agent to be written; if you decline the group,
|
|
134
|
+
its agents are skipped.
|
|
135
|
+
- `agemon status` shows one row per agent: managed, adopted (identical but not written by
|
|
136
|
+
agemon on this machine), changed (your edit, kept), absent, or not a regular file. It
|
|
137
|
+
needs attention (exit 2) when agemon has a newer version of an agent you didn't change,
|
|
138
|
+
or when another file in `.claude/agents/` declares the same `name:` as one of agemon's
|
|
139
|
+
agents — Claude Code identifies agents by that name and may load the other file instead.
|
|
140
|
+
- Claude Code picks up a new `.claude/agents/` directory in sessions started after it exists.
|
|
141
|
+
|
|
142
|
+
#### Default subagent model
|
|
143
|
+
|
|
144
|
+
The `subagent-default` capability sets one key in `.claude/settings.json`. It shows you the diff and
|
|
145
|
+
asks first; with `--yes` it prints the diff and goes ahead:
|
|
146
|
+
|
|
147
|
+
```json
|
|
148
|
+
{ "env": { "CLAUDE_CODE_SUBAGENT_MODEL": "sonnet" } }
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
- **What it does.** A Claude Code subagent runs on the first of these that is set: the model named
|
|
152
|
+
in the call, the agent file's `model`, this variable, the session's model. So this only changes
|
|
153
|
+
subagents that would otherwise inherit the session's model. Pinned agents such as `agemon-scout`
|
|
154
|
+
keep their model. The built-in `Explore` and `Plan` agents aren't affected. It applies to Claude
|
|
155
|
+
Code only.
|
|
156
|
+
- **It can raise your cost.** In a Haiku session it moves those subagents up to Sonnet. In one test,
|
|
157
|
+
a one-word subagent reply in a Haiku session cost $0.116 at list prices, $0.107 of it on Sonnet.
|
|
158
|
+
- **There is no measured saving yet.** agemon's routing eval started no subagents, so it didn't
|
|
159
|
+
test this setting (see `evals/routing/README.md`). Use `agemon usage` to judge it from your own
|
|
160
|
+
sessions.
|
|
161
|
+
- **It is shared with your team,** because the file is usually committed. agemon checks the Claude
|
|
162
|
+
Code version only on the machine that runs it, and it writes nothing if that version is older
|
|
163
|
+
than 2.1.251 or can't be read. On older versions this variable overrides pinned models, so an
|
|
164
|
+
Opus review would silently run on Sonnet. Anyone on your team using an older version gets that
|
|
165
|
+
behaviour from the committed file, so have them update first.
|
|
166
|
+
- **To change the tier,** edit the value in `.claude/settings.json`. agemon treats any other value
|
|
167
|
+
as yours: it never overwrites it, `agemon status` shows it as changed, and `nuke` leaves it.
|
|
168
|
+
- **`nuke` removes the key** only if it still has the value agemon wrote, and deletes `env` if that
|
|
169
|
+
leaves it empty. Everything else in the file stays byte for byte, except that an `"env": {}` you
|
|
170
|
+
already had goes too, and an empty top-level object loses any whitespace inside it. agemon deletes the file only if agemon created it and nothing else is left.
|
|
171
|
+
- If the file isn't valid JSON or clean UTF-8, or is a symlink, agemon says so and leaves it alone. An existing
|
|
172
|
+
repository is offered this capability once, like any new one; `--yes` alone doesn't add it there.
|
|
173
|
+
|
|
174
|
+
**Bundled skill updates.** agemon compares each bundled skill in `.claude/skills/` with
|
|
175
|
+
every version it has shipped. A skill still identical to an older version is updated to
|
|
176
|
+
the current one on the next run, behind the same consent step as installing a group (the
|
|
177
|
+
preview marks it "update (bundled content changed)"); `agemon status` shows "update
|
|
178
|
+
available" until then. A skill that differs from every shipped version — for example one
|
|
179
|
+
you edited — is never replaced: `status` shows it as changed, with the reason, and says how
|
|
180
|
+
to get agemon's version (delete `.claude/skills/<name>` and run `agemon`). An update that
|
|
181
|
+
fails halfway removes the half-written copy, so the next run reinstalls it; a rollback keeps
|
|
182
|
+
an update it already made and says so. This is also how an older `geo-seo` install picks up
|
|
183
|
+
the `geo-audit` that launches the installed subagents.
|
|
184
|
+
|
|
185
|
+
Skills recorded for a custom group that `agemon.toml` no longer defines are listed in one
|
|
186
|
+
"skills of removed groups" row.
|
|
187
|
+
|
|
188
|
+
`agemon-design-minimal`, `agemon-design-editorial` and `agemon-design-dashboard` are retired; their
|
|
189
|
+
looks are now presets of `agemon-design`, used when you name one. Running `agemon` offers to remove
|
|
190
|
+
an unmodified copy behind consent. An edited copy is never touched, and `agemon status` reports it.
|
|
191
|
+
|
|
192
|
+
#### Project-defined skill groups
|
|
193
|
+
|
|
194
|
+
A project can define its own groups in `agemon.toml`. The first run writes that file; if you
|
|
195
|
+
create it by hand, `capabilities` is required:
|
|
196
|
+
|
|
197
|
+
```toml
|
|
198
|
+
capabilities = ["skills"]
|
|
199
|
+
skill_groups = "essentials,house-style"
|
|
200
|
+
|
|
201
|
+
[custom_skill_groups.house-style]
|
|
202
|
+
label = "House style"
|
|
203
|
+
skills = [
|
|
204
|
+
{ source = "./tools/skills/house-rules" },
|
|
205
|
+
{ source = "github:acme/agent-skills", ref = "<40-character commit sha>", skill = "lint-rules" },
|
|
206
|
+
]
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
- A **local** source is a directory in this repository (`./…`, not under `.agents/`, `.claude/`,
|
|
210
|
+
`.git/` or `.agemon/`, no symlinks anywhere in it, at most 200 entries and 8 MiB). The skill's
|
|
211
|
+
name is the directory name.
|
|
212
|
+
- A **GitHub** source names `github:<owner>/<repository>`, a full 40-character commit `ref` (no
|
|
213
|
+
branches, tags or short shas) and the `skill` to take from `skills/<skill>/` in that
|
|
214
|
+
repository. agemon fetches exactly that commit without your git credentials.
|
|
215
|
+
- Each skill's `SKILL.md` must declare the same `name`.
|
|
216
|
+
- A group id must not reuse a built-in group id, or be `all`/`none`; a skill name must not
|
|
217
|
+
reuse a built-in skill name or appear twice.
|
|
218
|
+
- agemon does not reinstall a skill when its local source changes. `agemon status` reports an
|
|
219
|
+
installed copy that no longer matches its source, or a source agemon can no longer read, and
|
|
220
|
+
needs attention (exit 2) until they match. To install the new version, delete
|
|
221
|
+
`.claude/skills/<name>` and run `agemon`.
|
|
222
|
+
|
|
223
|
+
A custom group is installed only when you pick it in the interactive question or name it in
|
|
224
|
+
`--skill-groups` or `skill_groups`; `--yes` and `--skill-groups all` cover agemon's own groups
|
|
225
|
+
only. Custom groups get their own consent gate, which always prints every source (the local
|
|
226
|
+
content hash, or the GitHub repository and commit), even under `--yes`. A custom skill is
|
|
227
|
+
instructions for your agent from whoever wrote the repository's `agemon.toml`: review it like
|
|
228
|
+
code. A commit sha pins content, not origin — GitHub serves a commit from any fork under the
|
|
229
|
+
original repository's URL, so check the commit itself, not just the repository name.
|
|
230
|
+
|
|
231
|
+
Every bundled skill is vendored into agemon's own repo under `assets/skills/`, rather than fetched at
|
|
232
|
+
bootstrap time (custom GitHub groups you add yourself are still fetched) — so installs don't depend on GitHub being reachable and won't drift if an
|
|
233
|
+
upstream repo changes. Vendored skills
|
|
234
|
+
sourced from a third-party project are renamed under an `agemon-*` identity so they read as
|
|
235
|
+
agemon's own; the `team-lead` skills beyond `agemon-plan-rfc` and `prd-generator` are original to
|
|
236
|
+
this project and keep their `skill-*` names, while `geo-seo` and `essentials` keep their upstream
|
|
237
|
+
names. See [Vendored Skills](#vendored-skills--attribution) for sources and licenses.
|
|
238
|
+
|
|
239
|
+
### Daemon naming
|
|
240
|
+
|
|
241
|
+
The daemon's systemd unit is named `agemon-crg-daemon-<slug>-<hash>.service`. `<slug>` is
|
|
242
|
+
the repository directory's name, and `<hash>` is the first 8 hex digits of the SHA-256 of
|
|
243
|
+
the repository's real path. Two repositories with the same name therefore get separate
|
|
244
|
+
units, so one never overwrites and restarts the other's daemon.
|
|
245
|
+
|
|
246
|
+
The ledger records the unit name, and `nuke` removes the unit it recorded, even after the
|
|
247
|
+
repository was renamed or moved. A unit that now runs for another existing repository is
|
|
248
|
+
kept and reported. Units registered by older agemon versions (named without the hash) are
|
|
249
|
+
replaced on the next `agemon` run. User linger is shared by every repository: `nuke`
|
|
250
|
+
switches it off only in the repository that switched it on, once no other repository
|
|
251
|
+
uses it and no other agemon daemon unit is left.
|
|
252
|
+
|
|
253
|
+
On macOS the daemon is a launchd user agent, `~/Library/LaunchAgents/dev.agemon.crg.<slug>-<hash>.plist`
|
|
254
|
+
(mode `0644`), with the same `<slug>` and `<hash>`. It runs while you are logged in to the
|
|
255
|
+
desktop (launchd has no linger), so register it from a desktop session, not over SSH only.
|
|
256
|
+
launchd offers no per-service sandbox agemon can use, so the agent runs `code-review-graph
|
|
257
|
+
watch` with your normal user rights (like the Linux `compat` profile) and a `PATH` of system
|
|
258
|
+
directories only (`/usr/bin:/bin:/usr/sbin:/sbin`, so git is Apple's `/usr/bin/git`). An
|
|
259
|
+
entry registered on the other OS is never touched: `nuke` fails and names it, so run
|
|
260
|
+
`agemon nuke` on that machine.
|
|
261
|
+
|
|
262
|
+
### Daemon hardening and failures
|
|
263
|
+
|
|
264
|
+
On Linux, agemon first registers the unit with the `strict` profile: the system and your
|
|
265
|
+
home directory are read-only for code-review-graph, except the repository (its `.git/`
|
|
266
|
+
stays read-only) and `~/.code-review-graph`, and agemon's own state directory, which holds
|
|
267
|
+
its ledger key, is hidden. If the strict unit does not start, agemon falls back to
|
|
268
|
+
`compat`, which runs with your normal user rights. A repository that is or contains your
|
|
269
|
+
home directory goes straight to `compat`, and `AGEMON_DAEMON_HARDENING=compat` forces it.
|
|
270
|
+
The run prints the profile in use.
|
|
271
|
+
|
|
272
|
+
`strict` needs an unprivileged user namespace. On Ubuntu with
|
|
273
|
+
`kernel.apparmor_restrict_unprivileged_userns=1`, systemd can start the unit without the
|
|
274
|
+
sandbox. agemon checks for this once the unit runs and then prints
|
|
275
|
+
`daemon hardening: strict requested, not enforced on this host` (`status` and `inspect`
|
|
276
|
+
show the same). The daemon keeps running, without the sandbox.
|
|
277
|
+
|
|
278
|
+
A daemon that keeps crashing is stopped: systemd gives up after five starts within ten
|
|
279
|
+
minutes and the unit ends `failed`. `agemon status` reports it as failed, names
|
|
280
|
+
`journalctl --user -u <unit>` to see why, and exits 2; the next `agemon` run registers it
|
|
281
|
+
again. launchd has no such limit, so on macOS a crashing agent is restarted at most once a
|
|
282
|
+
minute.
|
|
283
|
+
|
|
284
|
+
agemon refuses to build the code graph or register the daemon when `.code-review-graph`
|
|
285
|
+
(or a root `.code-review-graph.db*` file) is tracked by git, is not a real directory, or
|
|
286
|
+
contains a symlink or special file, because code-review-graph would write through it to
|
|
287
|
+
wherever the link points. Remove it from the repository
|
|
288
|
+
(`git rm -r --cached .code-review-graph`) and run agemon again. On systemd the unit also
|
|
289
|
+
checks these paths each time it starts, so a link that arrives with a `git pull` stops the
|
|
290
|
+
daemon instead of being written through. launchd has no such start-time check; on macOS
|
|
291
|
+
only agemon's own checks at each run apply.
|
|
292
|
+
|
|
293
|
+
Daemon units registered before 6.0.0 get the start-time checks, the restart limit and the
|
|
294
|
+
current hardening only after `agemon nuke --only daemon` and a fresh `agemon` run.
|
|
295
|
+
|
|
296
|
+
## Other coding agents
|
|
297
|
+
|
|
298
|
+
Skills install into `.claude/skills/`, which Claude Code, Cursor, Copilot and OpenCode read. Codex,
|
|
299
|
+
Gemini CLI, Antigravity and Devin read `.agents/skills/` instead. When agemon finds one of those
|
|
300
|
+
four (the executable on `PATH`, or a `.codex`, `.gemini` or `.devin` folder in the repository), it
|
|
301
|
+
offers to copy skills there too:
|
|
302
|
+
|
|
303
|
+
- **You decide once.** `agemon` asks, and remembers a no; `agemon --skill-groups <group>` asks
|
|
304
|
+
again. `--yes` means yes unless you already said no. A run with neither a prompt nor `--yes`
|
|
305
|
+
adds nothing, and `agemon status` says copies are available.
|
|
306
|
+
- **agemon owns only what it wrote.** It records each copy's path and hash. `agemon` updates and
|
|
307
|
+
`agemon nuke` touch a copy only if its hash still matches that record.
|
|
308
|
+
- **Your copies stay yours.** A team's `.agents/skills/<name>`, or one you changed, is reported in
|
|
309
|
+
`agemon status` and is never overwritten or deleted.
|
|
310
|
+
- **The copy differs slightly.** Keys outside the [Agent Skills standard](https://agentskills.io/specification)
|
|
311
|
+
move into `metadata`, because other agents reject them or read them differently.
|
|
312
|
+
- **`agemon-adhd` is not copied.** It must run only when named, and not every agent honours the
|
|
313
|
+
flag that says so.
|
|
314
|
+
|
|
315
|
+
| Agent | Run a skill by name |
|
|
316
|
+
|---|---|
|
|
317
|
+
| Claude Code, Cursor, Antigravity, Devin | `/agemon-design` |
|
|
318
|
+
| Codex | `$agemon-design` |
|
|
319
|
+
| Gemini CLI, Copilot, OpenCode | Ask in plain words, for example "use the agemon-design skill" |
|
|
320
|
+
|
|
321
|
+
**What is promised:** agemon puts skills in a folder that agent's docs say it reads, and the table
|
|
322
|
+
above gives by-name use where that agent's docs show it; for Gemini CLI, Copilot and OpenCode the
|
|
323
|
+
syntax is not confirmed, so plain words are the suggestion, not a tested path. **What is not:** that every agent loads a skill
|
|
324
|
+
on its own. Only Claude Code has been measured, and only Claude Code has been run. Cursor, Copilot
|
|
325
|
+
and OpenCode read both folders, so they may list a skill twice once copies exist. See the
|
|
326
|
+
[agent matrix](evals/design/agent-matrix.md), which leaves its gaps visible.
|
|
327
|
+
|
|
328
|
+
## Claude on the web
|
|
329
|
+
|
|
330
|
+
The `agemon` CLI runs on your machine, so it can't install into Claude on the web directly.
|
|
331
|
+
There are two products to set up, and each gets agemon's work in a different way.
|
|
332
|
+
|
|
333
|
+
| agemon installs | Claude Code on the web | claude.ai chat |
|
|
334
|
+
|---|---|---|
|
|
335
|
+
| Rules (`AGENTS.md`, `CLAUDE.md`) | Yes, once committed | No |
|
|
336
|
+
| Skills | Yes, once committed | Yes, as plugins |
|
|
337
|
+
| Subagents | Yes, once committed | No |
|
|
338
|
+
| Hooks and `.mcp.json` | Yes, once committed; the tools they run need installing | No |
|
|
339
|
+
| `code-review-graph` | Through a setup script | No |
|
|
340
|
+
| Daemon and global CLI tools | No | No |
|
|
341
|
+
|
|
342
|
+
### Claude Code on the web
|
|
343
|
+
|
|
344
|
+
A cloud session clones your repository and reads its agent config, so run `agemon`, commit
|
|
345
|
+
the result and push it. It doesn't read `~/.claude`.
|
|
346
|
+
|
|
347
|
+
`agemon inspect` has a **Claude on the web** section that lists:
|
|
348
|
+
|
|
349
|
+
- agent config that is uncommitted or gitignored
|
|
350
|
+
- commits changing agent config that aren't pushed yet
|
|
351
|
+
- a setup script, if your hooks or MCP servers run `code-review-graph` directly
|
|
352
|
+
|
|
353
|
+
To use the setup script, open [claude.ai/code](https://claude.ai/code), select the
|
|
354
|
+
environment under the message box, open its settings, and paste the script into **Setup
|
|
355
|
+
script**. It installs the pinned version of `code-review-graph`, but unlike a local agemon
|
|
356
|
+
install, its dependencies are not hash-locked.
|
|
357
|
+
|
|
358
|
+
Cloud sessions in a project's threads are different: they don't use the repository's
|
|
359
|
+
`.claude/skills/` or run its hooks. They use the skills enabled on your claude.ai account.
|
|
360
|
+
|
|
361
|
+
### claude.ai chat
|
|
362
|
+
|
|
363
|
+
agemon's repository is also a plugin marketplace with one plugin per skill group:
|
|
364
|
+
|
|
365
|
+
1. In claude.ai, open **Customize** > **Plugins**.
|
|
366
|
+
2. Select **Add** > **Add marketplace** > **Add from a repository**.
|
|
367
|
+
3. Enter `Korak-997/agemon`.
|
|
368
|
+
4. Add the groups you want, such as `agemon-security` or `agemon-design`.
|
|
369
|
+
|
|
370
|
+
The same marketplace works in Claude Code:
|
|
371
|
+
|
|
372
|
+
```bash
|
|
373
|
+
claude plugin marketplace add Korak-997/agemon
|
|
374
|
+
claude plugin install agemon-security@agemon
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
Plugins differ from an `agemon` install in these ways:
|
|
378
|
+
|
|
379
|
+
- **No agemon safety net.** Claude manages plugins, so there is no agemon plan, diff, rollback
|
|
380
|
+
or `nuke`, and `agemon status` doesn't see them. Remove them where you added them.
|
|
381
|
+
- **Latest skills, not pinned.** The marketplace follows this repository's default branch
|
|
382
|
+
rather than a release. Claude Code doesn't auto-update third-party marketplaces by default;
|
|
383
|
+
run `claude plugin marketplace update agemon`, or turn on auto-update under `/plugin`.
|
|
384
|
+
- **Prefixed names.** A skill is named `<plugin>:<skill>`, such as
|
|
385
|
+
`agemon-security:agemon-security`. In a repository that also has an `agemon` install, you
|
|
386
|
+
would see both copies, so use one or the other there.
|
|
387
|
+
- **Skills and commands only in chat.** Subagents and hooks don't run there, and local tools
|
|
388
|
+
can't. `geo-audit` expects subagents, so use it in Claude Code rather than chat.
|
|
389
|
+
|
|
22
390
|
## Requirements
|
|
23
391
|
|
|
24
|
-
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
392
|
+
- To install, apply or nuke: Ubuntu, Debian, a derivative whose `/etc/os-release`
|
|
393
|
+
`ID_LIKE` lists `ubuntu` or `debian` (Linux Mint, Pop!_OS, …), or macOS 11 or later.
|
|
394
|
+
On macOS, run agemon as your own user: it refuses to run as root there, because
|
|
395
|
+
everything it installs belongs to one user. `inspect`, `status` and `plan` are
|
|
396
|
+
read-only and run on any OS with Node.js.
|
|
397
|
+
- agnix (the `cli-tool` capability) has pinned builds for Linux x64, Linux arm64 and
|
|
398
|
+
Apple Silicon Macs. On other machines (Intel Macs, x64 Node under Rosetta, other Linux
|
|
399
|
+
architectures) agemon skips `cli-tool` and says so; `agemon.toml` keeps it.
|
|
400
|
+
- Without pipx, install it first: `sudo apt install pipx`, or on macOS
|
|
401
|
+
`brew install pipx` with Homebrew's bin directory on `PATH`.
|
|
402
|
+
- The daemon needs systemd on Linux, or launchd on macOS. Without systemd (most
|
|
403
|
+
containers, WSL without systemd), agemon skips the daemon and says so; `agemon.toml`
|
|
404
|
+
still lists it for machines that have systemd.
|
|
405
|
+
- Node.js `>=22.12` (used to run the installed CLI; no other Node tooling needed).
|
|
406
|
+
- `curl` and `tar` (used by the installer script only).
|
|
407
|
+
- Binaries checked at runtime: `python3`, `pip`, `pipx`, `uv`, `code-review-graph`.
|
|
28
408
|
|
|
29
409
|
Notes:
|
|
30
410
|
- The CLI reports binary availability but does not auto-install missing dependencies.
|
|
@@ -32,18 +412,210 @@ Notes:
|
|
|
32
412
|
|
|
33
413
|
## Install
|
|
34
414
|
|
|
35
|
-
|
|
415
|
+
There are two install routes. Both install the same file: the release's `agemon.tgz`,
|
|
416
|
+
whose SHA-256 is listed in that release's `SHA256SUMS`. The npm package carries npm
|
|
417
|
+
provenance; the GitHub Release asset carries a GitHub build attestation. The package has
|
|
418
|
+
no runtime dependencies (they are bundled), so npm fetches nothing else.
|
|
419
|
+
|
|
420
|
+
**With npm:**
|
|
36
421
|
|
|
37
422
|
```bash
|
|
38
|
-
|
|
423
|
+
npm install --global agemon
|
|
39
424
|
```
|
|
40
425
|
|
|
41
|
-
|
|
426
|
+
**Without npm**, with the installer script:
|
|
427
|
+
|
|
428
|
+
```bash
|
|
429
|
+
curl --proto '=https' --tlsv1.2 -fsSL https://github.com/Korak-997/agemon/releases/latest/download/install.sh | sh
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
This downloads the latest self-contained release build (no `node_modules` required),
|
|
433
|
+
checks it against the release's `SHA256SUMS`, and links it onto your `PATH` — as
|
|
434
|
+
`/usr/local/bin/agemon` when run as root, or `~/.local/bin/agemon` otherwise.
|
|
435
|
+
|
|
436
|
+
The one-liner runs `install.sh` without checking it first. To verify the installer too:
|
|
437
|
+
|
|
438
|
+
```bash
|
|
439
|
+
cd "$(mktemp -d)"
|
|
440
|
+
curl --proto '=https' --tlsv1.2 -fsSLO https://github.com/Korak-997/agemon/releases/latest/download/install.sh
|
|
441
|
+
curl --proto '=https' --tlsv1.2 -fsSLO https://github.com/Korak-997/agemon/releases/latest/download/SHA256SUMS
|
|
442
|
+
grep ' install.sh$' SHA256SUMS | sha256sum -c - # macOS: shasum -a 256 -c -
|
|
443
|
+
gh attestation verify install.sh --repo Korak-997/agemon \
|
|
444
|
+
--signer-workflow Korak-997/agemon/.github/workflows/release.yml # optional: build provenance
|
|
445
|
+
sh install.sh
|
|
446
|
+
```
|
|
447
|
+
|
|
448
|
+
Or, from a local clone:
|
|
42
449
|
|
|
43
450
|
```bash
|
|
44
451
|
sh ./install.sh
|
|
45
452
|
```
|
|
46
453
|
|
|
454
|
+
**Trying it once with `npx`:** `npx agemon` works, but only run it in a repository you
|
|
455
|
+
trust. npx resolves and starts agemon using the repository's own `.npmrc` and
|
|
456
|
+
`node_modules`, so a hostile checkout can run its code before agemon starts. agemon also
|
|
457
|
+
ignores npm's injected configuration for the programs it runs itself in that mode,
|
|
458
|
+
including an `NPM_CONFIG_PREFIX` you exported. Install it with one of the routes above
|
|
459
|
+
for everyday use.
|
|
460
|
+
|
|
461
|
+
Then run it in any repository you want to bootstrap — plain `agemon` *is* the install
|
|
462
|
+
command, there is no separate `install` subcommand:
|
|
463
|
+
|
|
464
|
+
```bash
|
|
465
|
+
agemon
|
|
466
|
+
```
|
|
467
|
+
|
|
468
|
+
### Installer options
|
|
469
|
+
|
|
470
|
+
- `AGEMON_VERSION`: install a specific release tag instead of `latest` (e.g. `AGEMON_VERSION=6.0.0 sh install.sh`).
|
|
471
|
+
Releases up to 4.7.2 have no `SHA256SUMS` and can no longer be installed this way.
|
|
472
|
+
- `AGEMON_INSTALL_DIR`: override the install directory instead of the root/user default.
|
|
473
|
+
It must be an absolute path to a new or empty directory, or to one a previous agemon
|
|
474
|
+
install created. The installer refuses anything else (a symlink, your home directory, a
|
|
475
|
+
source checkout, a directory with other files) and changes nothing.
|
|
476
|
+
- `AGEMON_VERIFY_ATTESTATION=1`: also verify the tarball's build-provenance attestation
|
|
477
|
+
with `gh attestation verify`. This needs the GitHub CLI, logged in with `gh auth login`.
|
|
478
|
+
|
|
479
|
+
### What the installer verifies
|
|
480
|
+
|
|
481
|
+
- **Checksums** (always): the tarball must match the `SHA256SUMS` published with the same
|
|
482
|
+
release. This catches truncated or corrupted downloads and a CDN serving files from two
|
|
483
|
+
different releases. It does not catch a consistently stale `latest` alias (you would get
|
|
484
|
+
an older, still verified release), and a checksum from the same place as the file proves
|
|
485
|
+
nothing against an attacker who can replace both.
|
|
486
|
+
- **Attestations** (opt-in, above): prove the tarball was built by this repository's release
|
|
487
|
+
workflow, so they catch a tampered or swapped asset.
|
|
488
|
+
- **Neither** helps if the release workflow itself, a dependency it builds with, or the
|
|
489
|
+
maintainer's account is compromised: a tarball built from a poisoned dependency is still
|
|
490
|
+
correctly checksummed and attested.
|
|
491
|
+
- The CLI's self-update checks `install.sh` against `SHA256SUMS`; it verifies attestations
|
|
492
|
+
only if you export `AGEMON_VERIFY_ATTESTATION=1`, which the installer it runs honours.
|
|
493
|
+
|
|
494
|
+
### Upgrading and rolling back
|
|
495
|
+
|
|
496
|
+
```bash
|
|
497
|
+
agemon upgrade # install the latest release
|
|
498
|
+
agemon upgrade 6.0.0 # install that release (asks before a downgrade)
|
|
499
|
+
agemon upgrade --rollback # switch back to the install the last upgrade replaced
|
|
500
|
+
```
|
|
501
|
+
|
|
502
|
+
`agemon upgrade` works out how the running copy was installed and upgrades it the same
|
|
503
|
+
way:
|
|
504
|
+
|
|
505
|
+
- **Install script:** it runs that release's `install.sh` after checking it against the
|
|
506
|
+
release's `SHA256SUMS`, for the same install dir (a custom `AGEMON_INSTALL_DIR` is kept).
|
|
507
|
+
The installer keeps the replaced install as `<install dir>.prev`, and
|
|
508
|
+
`agemon upgrade --rollback` swaps the two (run it again to swap back). A downgrade
|
|
509
|
+
always runs the newest release's installer, with the older version as its target.
|
|
510
|
+
- **npm (`npm install --global`):** it downloads the release's `agemon.tgz`, checks it
|
|
511
|
+
against `SHA256SUMS` (and its attestation with `AGEMON_VERIFY_ATTESTATION=1`), and runs
|
|
512
|
+
`npm install --global --ignore-scripts --prefix <the running copy's prefix>` on that
|
|
513
|
+
file. `--print` prints these steps instead of running them. Upgrade with
|
|
514
|
+
`agemon upgrade`, not `npm update -g`: npm records the install as coming from a local
|
|
515
|
+
file. There is no `--rollback`; install the previous version by name.
|
|
516
|
+
- **npx:** npx runs the version you ask for (`npx agemon@6.0.0`).
|
|
517
|
+
- **A source checkout, Volta, `pnpm dlx`, `bun x` or a project-local install:** agemon
|
|
518
|
+
says it can't tell how it was installed; update it the way you installed it.
|
|
519
|
+
|
|
520
|
+
`upgrade` without a version never downgrades: if the latest release is not newer, it
|
|
521
|
+
reports that agemon is up to date. It refuses to replace an install another user owns
|
|
522
|
+
(run it as that user: `sudo` for a root install, no `sudo` for your own), and refuses to
|
|
523
|
+
run as root with another user's environment (`sudo -E`). Don't run two upgrades or
|
|
524
|
+
rollbacks of the same install at once.
|
|
525
|
+
|
|
526
|
+
After an upgrade, agemon prints the link to the release notes and reminds you to run
|
|
527
|
+
`agemon` in each repository: upgrading replaces the program and changes no repository.
|
|
528
|
+
|
|
529
|
+
### What a new version brings to a repository
|
|
530
|
+
|
|
531
|
+
The next `agemon` run in a repository shows or asks about everything it could use but does not
|
|
532
|
+
have yet. Only skill groups and capabilities need a decision; an updated skill or subagent, or a
|
|
533
|
+
new skill in a group you already installed, appears at the usual consent step.
|
|
534
|
+
|
|
535
|
+
- **New** means this repository has not decided yet: a skill group it was never offered, or a
|
|
536
|
+
capability `known_capabilities` does not name and whose dependencies are listed.
|
|
537
|
+
- **Declined** means it decided against: a skill group you did not pick, or a capability in
|
|
538
|
+
`known_capabilities` that `capabilities` leaves out.
|
|
539
|
+
|
|
540
|
+
| Run | New | Declined |
|
|
541
|
+
|---|---|---|
|
|
542
|
+
| `agemon` or `agemon apply` in a terminal | Asks once | One-line reminder |
|
|
543
|
+
| With `--yes` or without a terminal | Lists it and leaves it waiting | One-line reminder |
|
|
544
|
+
| `agemon --dry-run`, `agemon plan` | Lists it | One-line reminder |
|
|
545
|
+
| `agemon status` | Listed under "Available" | Listed under "Available" |
|
|
546
|
+
| `--quiet` | Nothing | Nothing |
|
|
547
|
+
|
|
548
|
+
```text
|
|
549
|
+
New: skill group 'security', capability 'agents'. Run 'agemon' to choose.
|
|
550
|
+
Declined: skill group 'seo'. Run 'agemon add <name>' to install.
|
|
551
|
+
```
|
|
552
|
+
|
|
553
|
+
Neither changes the exit code, so a new release doesn't fail a CI job that runs `agemon status`.
|
|
554
|
+
A first install doesn't print the reminder, because you just made those choices.
|
|
555
|
+
|
|
556
|
+
Install anything listed with `agemon add`:
|
|
557
|
+
|
|
558
|
+
```bash
|
|
559
|
+
agemon add security agents
|
|
560
|
+
```
|
|
561
|
+
|
|
562
|
+
`add` takes skill group and capability names and shows the usual consent step. It changes
|
|
563
|
+
nothing else in the repository, apart from installing subagents for a group when `agents` is
|
|
564
|
+
on, and bringing skills up to date when it adds a group. A decline is cleared only after the
|
|
565
|
+
install succeeds. A capability
|
|
566
|
+
is added to `capabilities` in `agemon.toml` (see [`agemon.toml`](#agemontoml)) unless you refuse
|
|
567
|
+
it. It refuses a capability or group whose dependency is not enabled, and a repository with no
|
|
568
|
+
`agemon.toml`; run `agemon` there first.
|
|
569
|
+
|
|
570
|
+
Skill group declines are kept per clone in `.agemon/`, so a teammate is still asked. Capability
|
|
571
|
+
choices are in the committed `agemon.toml`, so they apply to the whole team.
|
|
572
|
+
|
|
573
|
+
### Uninstalling agemon itself
|
|
574
|
+
|
|
575
|
+
`agemon nuke` reverses changes `agemon` made *inside a repository* — it does not remove
|
|
576
|
+
the `agemon` binary. Run `agemon nuke` in each repository first, then remove agemon
|
|
577
|
+
itself:
|
|
578
|
+
|
|
579
|
+
```bash
|
|
580
|
+
agemon self-uninstall --dry-run # show what would be removed
|
|
581
|
+
agemon self-uninstall # asks once; --yes skips the question
|
|
582
|
+
```
|
|
583
|
+
|
|
584
|
+
For an install-script copy it removes the install dir, its `.prev` rollback copy, the
|
|
585
|
+
`agemon` link that points into it, the update-check cache, and agemon's machine state
|
|
586
|
+
(`${XDG_STATE_HOME:-~/.local/state}/agemon`, on macOS `~/Library/Application Support/agemon`
|
|
587
|
+
unless `XDG_STATE_HOME` is set: shared-tools ledger and tool caches). It
|
|
588
|
+
keeps the machine state while a repository still uses a shared tool, an interrupted
|
|
589
|
+
apply can still be recovered, or agemon is running somewhere else, and says which. It
|
|
590
|
+
lists the repositories it knows still have agemon-managed files; agemon only knows
|
|
591
|
+
repositories that use a shared tool, so check any others yourself. It never changes
|
|
592
|
+
files inside repositories. Machine state is per user: run it as the user who installed
|
|
593
|
+
agemon (with `sudo` for a root install).
|
|
594
|
+
|
|
595
|
+
It refuses to start while an interrupted apply can still be recovered (run
|
|
596
|
+
`agemon recover` first). For an npm install it prints
|
|
597
|
+
`npm uninstall --global --prefix <prefix> agemon`. A copy run through npx has nothing to
|
|
598
|
+
remove, and a source checkout or an install agemon can't identify is refused.
|
|
599
|
+
|
|
600
|
+
### Update checks
|
|
601
|
+
|
|
602
|
+
`agemon`, `agemon apply` and `agemon nuke` check once a day whether a newer GitHub Release
|
|
603
|
+
exists. The check never slows a command down:
|
|
604
|
+
|
|
605
|
+
- the lookup starts in the background when the command starts, and its result is shown
|
|
606
|
+
only **after** the command has finished and exited successfully. If the lookup has not
|
|
607
|
+
finished by then, it is cancelled and tried again on a later run;
|
|
608
|
+
- in an interactive terminal (without `--yes`), for an install-script or npm install,
|
|
609
|
+
agemon then asks whether to install the update. On yes, it upgrades exactly as
|
|
610
|
+
`agemon upgrade` would (see above). Nothing runs if a check fails;
|
|
611
|
+
- with `--yes`, without a terminal, or for any other install method, it prints a one-line
|
|
612
|
+
notice with the command to run instead of asking. A release candidate is offered its
|
|
613
|
+
final release; an older release is never offered.
|
|
614
|
+
|
|
615
|
+
There is no check at all for `inspect`, `status`, `plan` or `recover`, with `--dry-run` or
|
|
616
|
+
`--quiet`, when `CI` is set (to anything other than `0` or `false`), or when
|
|
617
|
+
`AGEMON_NO_UPDATE_CHECK=1` is set.
|
|
618
|
+
|
|
47
619
|
## CLI Usage
|
|
48
620
|
|
|
49
621
|
`install` is the default command:
|
|
@@ -52,57 +624,372 @@ sh ./install.sh
|
|
|
52
624
|
agemon [options]
|
|
53
625
|
```
|
|
54
626
|
|
|
627
|
+
Install a capability or skill group the repository doesn't have yet (see
|
|
628
|
+
[What a new version brings to a repository](#what-a-new-version-brings-to-a-repository)):
|
|
629
|
+
|
|
630
|
+
```bash
|
|
631
|
+
agemon add <names...> [--yes]
|
|
632
|
+
```
|
|
633
|
+
|
|
55
634
|
Reverse managed changes:
|
|
56
635
|
|
|
57
636
|
```bash
|
|
58
|
-
agemon nuke [
|
|
637
|
+
agemon nuke [--yes] [--dry-run] [--only <plugins>] [--skip-daemon] [--remove-shared <tools>]
|
|
638
|
+
```
|
|
639
|
+
|
|
640
|
+
`nuke` first lists everything it will reverse, including machine-wide steps such as
|
|
641
|
+
uninstalling a global npm package or disabling user linger. It then asks once. Notes:
|
|
642
|
+
|
|
643
|
+
- `--yes` skips the list and the question;
|
|
644
|
+
- without a terminal and without `--yes`, it prints the list and stops (exit 0), the
|
|
645
|
+
same way a first install previews. **Scripts that ran `agemon nuke` without `--yes`
|
|
646
|
+
must now pass it;**
|
|
647
|
+
- it never removes something another installed capability still needs. With
|
|
648
|
+
`--skip-daemon`, or when the daemon could not be removed, code-review-graph stays as
|
|
649
|
+
long as the daemon is installed. The list shows each such line as `kept: …`;
|
|
650
|
+
- if one capability cannot be reversed, `nuke` still reverses the others, then exits 1
|
|
651
|
+
and keeps the failed one's ledger entries so you can fix the cause and re-run;
|
|
652
|
+
- `agemon.toml` is deleted only when nothing failed and the ledger is empty afterwards. With
|
|
653
|
+
`--only` or `--skip-daemon`, that run must also have reversed at least one entry, so a
|
|
654
|
+
fresh clone's committed `agemon.toml` survives `nuke --only …`. Deleting it is always
|
|
655
|
+
listed and asked about like any other reversal;
|
|
656
|
+
- `nuke --dry-run` changes nothing, not even `.agemon/`.
|
|
657
|
+
- code-review-graph and agnix are shared by every repository on the machine. `nuke`
|
|
658
|
+
removes one only when this repository installed it and no other repository uses it
|
|
659
|
+
(`agemon status` lists the users under "Shared tools"). A tool agemon installed before
|
|
660
|
+
it tracked shared tools is kept unless you pass `--remove-shared code-review-graph,agnix`
|
|
661
|
+
(or one of them); the kept line prints the manual uninstall command. See
|
|
662
|
+
[Two Ledgers](docs/architecture-and-operations.md#two-ledgers).
|
|
663
|
+
- skills: `nuke` removes `.claude/skills/<name>` itself, without the skills CLI and
|
|
664
|
+
without network access, and only when its content is a version agemon installed; an
|
|
665
|
+
edited copy is kept and named. A custom group's skill counts as installed by agemon
|
|
666
|
+
only if it matched its source at install time, which agemon recorded then; a copy with
|
|
667
|
+
no such record is kept and named. In `.agents/skills/<name>`, it removes only a copy agemon
|
|
668
|
+
recorded writing whose hash is unchanged; a changed copy is kept and named, and a copy agemon
|
|
669
|
+
did not write is never touched. It removes only agemon's skills from `skills-lock.json`.
|
|
670
|
+
- `.gitignore` and directories: every `nuke` removes the `.claude`, `.claude/skills`,
|
|
671
|
+
`.claude/agents`, `.agents` and `.agents/skills` directories agemon created once they are empty (never their contents).
|
|
672
|
+
When the last capability goes, it also removes the `/.agemon/` and `/skills-lock.json`
|
|
673
|
+
lines agemon added (only the exact lines it appended and recorded; your own equivalent
|
|
674
|
+
lines stay), even in a committed `.gitignore`, and deletes a `.gitignore` agemon created
|
|
675
|
+
once it is empty. `/skills-lock.json` stays while `skills-lock.json` exists, and
|
|
676
|
+
`/.agemon/` stays while `.agemon/` exists. Installs made before agemon recorded these
|
|
677
|
+
lines keep them, and `nuke` says so.
|
|
678
|
+
|
|
679
|
+
> **Downgrading:** an older agemon's `nuke` does not know these records, so it keeps
|
|
680
|
+
> `agemon.toml` and `.agemon/`; a newer agemon's `nuke` then finishes the cleanup.
|
|
681
|
+
|
|
682
|
+
Restore the files an interrupted apply changed (see
|
|
683
|
+
[Interrupted applies](#interrupted-applies)):
|
|
684
|
+
|
|
685
|
+
```bash
|
|
686
|
+
agemon recover [--yes] [--dry-run]
|
|
687
|
+
```
|
|
688
|
+
|
|
689
|
+
### Checking what subagent models saved (`agemon usage`)
|
|
690
|
+
|
|
691
|
+
```bash
|
|
692
|
+
agemon usage [--since 30d] [--json]
|
|
59
693
|
```
|
|
60
694
|
|
|
695
|
+
`agemon usage` estimates what running subagents on cheaper models saved in this repository. There
|
|
696
|
+
is nothing to turn on: it reads the sessions Claude Code already saves under
|
|
697
|
+
`~/.claude/projects/` (or `CLAUDE_CONFIG_DIR`). It only reports on Claude Code, and it does not
|
|
698
|
+
call any model.
|
|
699
|
+
|
|
700
|
+
For each session it adds up what every response cost, then prices the subagents' same tokens at
|
|
701
|
+
the session's own model. The difference is the estimated saving. It also shows how many sessions
|
|
702
|
+
used subagents, and how many of those calls ran cheaper than the session's model.
|
|
703
|
+
|
|
704
|
+
- **It is an estimate, not a bill.** It uses API list prices, so on a subscription a saving means
|
|
705
|
+
less of your usage limit spent, not less money paid. It assumes standard speed and global routing.
|
|
706
|
+
On this project's own sessions, its totals came within 2% of the CLI's figures.
|
|
707
|
+
- **It doesn't compare against doing the work inline.** That would use different tokens: no subagent
|
|
708
|
+
startup cost, but a longer main conversation. It also can't tell whether the cheaper work was good
|
|
709
|
+
enough, so note when you have to redo a subagent's work.
|
|
710
|
+
- **`--since` counts whole sessions.** A session active inside the window counts in full.
|
|
711
|
+
- **Models without a known price** are left out and counted in the report. Prices are built in, so
|
|
712
|
+
check them after a price change.
|
|
713
|
+
- **Run it at least monthly.** Each run saves its numbers, so they outlive Claude Code deleting old
|
|
714
|
+
transcripts. Only sessions still on disk at a run are captured. Sessions from another worktree are
|
|
715
|
+
a separate project: run it there too.
|
|
716
|
+
|
|
717
|
+
The history is `usage/<repo key>.json` in agemon's state directory, readable only by you. It holds
|
|
718
|
+
numbers, models and agent type names, never prompts, code or task descriptions. `nuke` keeps it, and
|
|
719
|
+
`agemon self-uninstall` removes it with the rest of the machine state.
|
|
720
|
+
|
|
61
721
|
### Global Options
|
|
62
722
|
|
|
63
723
|
- `--dry-run`: narrate actions without making changes.
|
|
64
724
|
- `--yes`: skip confirmation prompts.
|
|
65
725
|
- `--only <plugins>`: run only a comma-separated subset of plugins.
|
|
66
|
-
- `--skip-daemon`: skip daemon registration during install
|
|
726
|
+
- `--skip-daemon`: skip daemon registration during install; keep the daemon during `nuke`.
|
|
727
|
+
- `--skill-groups <groups>`: comma-separated skill group ids to install, or `all`/`none` — see
|
|
728
|
+
[Skill Groups](#skill-groups).
|
|
67
729
|
- `--no-color`: disable ANSI colors.
|
|
68
|
-
- `-v, --verbose`:
|
|
730
|
+
- `-v, --verbose`: print each subprocess's command line, exit code and the last 20 lines of
|
|
731
|
+
its stdout/stderr beneath the step. Secrets that look like tokens, keys, passwords,
|
|
732
|
+
`Authorization` values, credentials in URLs and PEM blocks are redacted; the environment
|
|
733
|
+
is never printed. `--quiet` wins over `--verbose`.
|
|
69
734
|
- `-q, --quiet`: reduce output to minimal step/final lines.
|
|
70
735
|
|
|
71
736
|
Examples:
|
|
72
737
|
|
|
73
738
|
```bash
|
|
74
739
|
# See planned actions only
|
|
75
|
-
|
|
740
|
+
agemon --dry-run
|
|
76
741
|
|
|
77
|
-
# Install
|
|
78
|
-
|
|
742
|
+
# Install every skill group non-interactively (e.g. in CI)
|
|
743
|
+
agemon --yes --skill-groups all
|
|
79
744
|
|
|
80
|
-
#
|
|
81
|
-
|
|
745
|
+
# Install only the security and architecture groups on top of essentials
|
|
746
|
+
agemon --yes --skill-groups security,architecture
|
|
82
747
|
```
|
|
83
748
|
|
|
749
|
+
### Repository root
|
|
750
|
+
|
|
751
|
+
agemon works on the repository you are in, not on the directory you run it from. It looks
|
|
752
|
+
from the current directory upwards for the nearest `.git` (a directory, or a `gitdir:`
|
|
753
|
+
file as in a git worktree), and uses the directory that holds it for `agemon.toml`,
|
|
754
|
+
`.agemon/`, rule files and subprocesses. When that is not the current directory, it prints
|
|
755
|
+
`Using repository root <path> (not the current directory).` to stderr.
|
|
756
|
+
|
|
757
|
+
It falls back to the current directory, with a notice, when:
|
|
758
|
+
|
|
759
|
+
- there is no `.git` above it;
|
|
760
|
+
- the first `.git` it meets is something else (for example a symlink);
|
|
761
|
+
- that repository contains your home directory, e.g. a home directory tracked as a
|
|
762
|
+
dotfiles repo. Run `git init` in the project, or run agemon from the repository root;
|
|
763
|
+
- that repository, or its `.git`, belongs to another user (e.g. a `/tmp/.git` someone else
|
|
764
|
+
created).
|
|
765
|
+
|
|
766
|
+
agemon reads `.git` from the filesystem only, so git configuration (such as
|
|
767
|
+
`core.worktree`) cannot redirect where it writes.
|
|
768
|
+
|
|
769
|
+
> **Upgrading:** if you ran agemon from a subdirectory with an earlier release, its state
|
|
770
|
+
> is in that subdirectory. Before upgrading, run `agemon nuke` there with the earlier
|
|
771
|
+
> release, or delete that subdirectory's `.agemon/` and agemon-written files by hand.
|
|
772
|
+
|
|
773
|
+
### `agemon.toml`
|
|
774
|
+
|
|
775
|
+
The first successful run writes `agemon.toml` at the repository root; commit it so
|
|
776
|
+
teammates and CI reconcile the same way. It accepts exactly these keys. An unknown key, an
|
|
777
|
+
unknown capability id, or an empty `capabilities` list is an error, never a silent
|
|
778
|
+
fallback:
|
|
779
|
+
|
|
780
|
+
```toml
|
|
781
|
+
capabilities = ["crg", "daemon", "skills", "agents", "subagent-default", "cli-tool", "master-prompt"]
|
|
782
|
+
known_capabilities = ["crg", "daemon", "skills", "agents", "subagent-default", "cli-tool", "master-prompt"]
|
|
783
|
+
skill_groups = "essentials,security" # optional
|
|
784
|
+
|
|
785
|
+
[custom_skill_groups.house-style] # optional — see Project-defined skill groups
|
|
786
|
+
label = "House style"
|
|
787
|
+
skills = [{ source = "./tools/skills/house-rules" }]
|
|
788
|
+
|
|
789
|
+
[conflict_decisions] # optional
|
|
790
|
+
"rule-file:CLAUDE.md" = "keep" # keep | replace | skip
|
|
791
|
+
```
|
|
792
|
+
|
|
793
|
+
`known_capabilities` lists the capabilities the agemon that wrote the file knew about. A
|
|
794
|
+
capability a later release adds is new to the file: an interactive `agemon` or `agemon apply`
|
|
795
|
+
asks about it once, when everything it depends on is listed. What you pick is installed and added to
|
|
796
|
+
`capabilities`, and everything agemon knows goes into `known_capabilities`, so what you
|
|
797
|
+
did not pick becomes a declined reminder instead of another question. `agemon add <name>`
|
|
798
|
+
installs a capability the same way, and `--yes` never decides for you.
|
|
799
|
+
|
|
800
|
+
Recording this rewrites `agemon.toml`. All values are kept, but comments and layout are not; if
|
|
801
|
+
anything like that would be lost, the original is saved under `.agemon/backups/` and the message
|
|
802
|
+
names the file. Each such rewrite keeps its own saved original; a later one never overwrites an
|
|
803
|
+
earlier one. It never happens with `--dry-run`, `--only` or `agemon plan`, or after a rollback. To
|
|
804
|
+
opt out later, remove the capability from `capabilities`; because it is in `known_capabilities`,
|
|
805
|
+
agemon does not ask again. Older agemon releases reject a file with `known_capabilities` or
|
|
806
|
+
`agents`, so upgrade agemon in CI before committing it. The rewrite is skipped while `/.agemon/` is
|
|
807
|
+
not git-ignored, and a full `agemon nuke` deletes `.agemon/`, including that saved original.
|
|
808
|
+
|
|
809
|
+
A conflict is a rule file that holds your own rules where agemon would write a pointer.
|
|
810
|
+
It needs a decision. `--yes` never picks one for you, so record it under
|
|
811
|
+
`conflict_decisions`:
|
|
812
|
+
|
|
813
|
+
- `keep` and `skip` apply in any session;
|
|
814
|
+
- `replace` applies with `--yes` (so a committed `replace` overwrites that pointer file in
|
|
815
|
+
`--yes` runs; agemon backs up the original first), and is asked again in an
|
|
816
|
+
interactive terminal;
|
|
817
|
+
- without a decision, a non-interactive run exits 2 (see below).
|
|
818
|
+
|
|
819
|
+
### Exit codes
|
|
820
|
+
|
|
821
|
+
| Code | Meaning |
|
|
822
|
+
|---|---|
|
|
823
|
+
| `0` | Success, nothing to do, preview only (`--dry-run`, or a first run without consent), or you declined. |
|
|
824
|
+
| `1` | Error, or the apply failed and was rolled back. |
|
|
825
|
+
| `2` | Drift found, consent was missing (operations or conflicts pending in a non-interactive run), or the apply finished but verification found problems. |
|
|
826
|
+
| `130` / `143` / `129` | Interrupted by SIGINT / SIGTERM / SIGHUP (see [Interrupted applies](#interrupted-applies)). |
|
|
827
|
+
|
|
828
|
+
`agemon status` exits 2 when it finds a problem in a repository where agemon has state (a
|
|
829
|
+
ledger or an interrupted apply). In a repository agemon never touched, it reports what it
|
|
830
|
+
sees and exits 0. An invalid `agemon.toml` is always reported, and `status` then exits 2;
|
|
831
|
+
`inspect` reports it too (`configError` in `--json`) and still exits 0.
|
|
832
|
+
|
|
833
|
+
If `git ls-files` cannot run (git missing, or "dubious ownership" in a CI container),
|
|
834
|
+
`status`, `inspect` and install print `could not check whether .agemon/ is tracked by git`.
|
|
835
|
+
This is a warning only, and it does not change the exit code.
|
|
836
|
+
|
|
837
|
+
Whether `/.agemon/` is git-ignored is decided by git itself
|
|
838
|
+
(`git check-ignore --no-index .agemon/`), so a later `!.agemon` rule in `.gitignore` counts as
|
|
839
|
+
not ignored. Inside a repository where git cannot answer, agemon treats `.agemon/` as not
|
|
840
|
+
ignored: an interactive run asks before adding `/.agemon/` to `.gitignore`, a
|
|
841
|
+
non-interactive run without `--yes` stops, and the git error is printed as
|
|
842
|
+
`could not ask git whether .agemon/ is ignored: …` (in `inspect --json` it is part of
|
|
843
|
+
`isolation.trackingCheckError`).
|
|
844
|
+
|
|
845
|
+
Before installing code-review-graph or its daemon, agemon reads the repository's own git
|
|
846
|
+
configuration (`.git/config`, `config.worktree`, `.gitmodules`, and the same files of
|
|
847
|
+
populated submodules) and checks every key against a short allowlist of settings that
|
|
848
|
+
cannot name a program. If any key falls outside it, the install goes to a separate
|
|
849
|
+
**trust gate** that lists every such key and value (secrets redacted):
|
|
850
|
+
|
|
851
|
+
- interactively, you approve or decline that gate like any other;
|
|
852
|
+
- `--yes` alone does **not** approve it: the operations are skipped with the keys listed,
|
|
853
|
+
and the run exits 2;
|
|
854
|
+
- `--yes --trust-repo-git-config` approves it for that run only (the keys are still
|
|
855
|
+
printed). The flag is never read from `agemon.toml` or any file in the repository, so a
|
|
856
|
+
repository cannot opt itself in; read the printed keys before you pass it.
|
|
857
|
+
|
|
858
|
+
More than 20 such keys, keys that cannot be shown safely, and a git configuration agemon
|
|
859
|
+
cannot read are always skipped, with no override. On an existing install, `status` shows
|
|
860
|
+
the keys as needing attention and exits 2, and a daemon unit written before these
|
|
861
|
+
safeguards is reported until you run `agemon nuke --only daemon`, then
|
|
862
|
+
`agemon --only daemon`.
|
|
863
|
+
|
|
864
|
+
### Agent Detection (`agemon inspect`)
|
|
865
|
+
|
|
866
|
+
`agemon inspect` reports, read-only, which coding-agent ecosystems the repo is set up for
|
|
867
|
+
and which are actually present on the machine. Three ecosystems are covered: **Claude
|
|
868
|
+
Code**, **Gemini CLI**, and **VS Code/GitHub Copilot**. For each, the report shows:
|
|
869
|
+
|
|
870
|
+
- **configured** — recognizable config exists in the repo (e.g. `CLAUDE.md`,
|
|
871
|
+
`.claude/settings.json`, `GEMINI.md`, `.gemini/settings.json`, or Copilot instruction
|
|
872
|
+
files), independent of anything installed on the machine.
|
|
873
|
+
- **installed** — a real executable resolved on `PATH` and reported a version via a
|
|
874
|
+
`--version`-style probe. The report always shows the resolved absolute path, never just
|
|
875
|
+
the bare command name, so it's clear exactly what agemon ran. Copilot has no standalone
|
|
876
|
+
executable, so it never advances past `configured`.
|
|
877
|
+
- **usable** — opt-in only, never run by default. Pass `--check-agents-usable` to also run
|
|
878
|
+
a non-mutating dry-run check (e.g. listing config) for adapters that define one.
|
|
879
|
+
|
|
880
|
+
Detection never executes an agent with a prompt or tool access — only version/dry-run
|
|
881
|
+
probes. The first time it looks for installed executables, agemon asks for one-time
|
|
882
|
+
confirmation ("May agemon look for AI coding agents installed on this machine?"); declining
|
|
883
|
+
still returns full `configured` results, just without the installed/usable checks.
|
|
884
|
+
|
|
885
|
+
```bash
|
|
886
|
+
# Table report, including the Agents section
|
|
887
|
+
agemon inspect
|
|
888
|
+
|
|
889
|
+
# Same, plus an opt-in non-mutating usability probe
|
|
890
|
+
agemon inspect --check-agents-usable
|
|
891
|
+
|
|
892
|
+
# Machine-readable report (agents included under `agents`)
|
|
893
|
+
agemon inspect --json
|
|
894
|
+
```
|
|
895
|
+
|
|
896
|
+
`agemon status` includes a one-line agent summary (counts configured/installed) alongside
|
|
897
|
+
its usual health/drift output.
|
|
898
|
+
|
|
899
|
+
`agemon inspect` also reports what stops a repository working with Claude Code on the web,
|
|
900
|
+
under `cloud` in the JSON report. See [Claude on the web](#claude-on-the-web).
|
|
901
|
+
|
|
84
902
|
## Reversibility Guarantees
|
|
85
903
|
|
|
86
|
-
- `nuke` removes only agemon-managed artifacts tracked in `.agemon/state.json
|
|
904
|
+
- `nuke` removes only agemon-managed artifacts tracked in `.agemon/state.json`, and among
|
|
905
|
+
those, it removes skills, subagents, shared tools, daemon units and the code graph only
|
|
906
|
+
when this machine wrote the entry (each entry carries a receipt keyed by
|
|
907
|
+
`${XDG_STATE_HOME:-~/.local/state}/agemon/ledger-key`). Entries from an agemon before
|
|
908
|
+
receipts, from another machine or from a committed ledger are kept and reported, with
|
|
909
|
+
what to remove by hand; `status` counts them. See
|
|
910
|
+
[Ledger receipts](docs/architecture-and-operations.md#ledger-receipts).
|
|
87
911
|
- Pre-existing tools/files are detected and preserved.
|
|
88
|
-
-
|
|
89
|
-
|
|
912
|
+
- The `.gitignore` lines and empty directories agemon added are recorded too, so a full
|
|
913
|
+
`nuke` leaves the repository as it was before agemon (see `nuke` above).
|
|
914
|
+
- Master-prompt file edits are backed up in `.agemon/backups/` and restored on uninstall,
|
|
915
|
+
but only when the backup provably matches the file agemon found (checksum check).
|
|
916
|
+
- A managed file you edited after agemon wrote it is never overwritten or deleted: agemon
|
|
917
|
+
removes only its own block, or leaves the file as is, saves the earlier contents beside it
|
|
918
|
+
as `<file>.agemon-original`, and prints `manual cleanup needed: …`.
|
|
919
|
+
- agemon writes files atomically, keeps their permissions, and refuses to write through a
|
|
920
|
+
symlink, a special file or a read-only file. A symlinked rule file (for example
|
|
921
|
+
`CLAUDE.md -> AGENTS.md`) is reported as a conflict and left alone.
|
|
922
|
+
- A failed apply rolls back every file it touched; anything it could not restore is listed,
|
|
923
|
+
and the apply's journal is kept so `agemon recover` can retry.
|
|
924
|
+
- `.agemon/` content (plans, the ledger, backups) is treated as untrusted, because it may
|
|
925
|
+
have been committed by someone else. `agemon apply --plan <id>` accepts only a valid
|
|
926
|
+
16-character plan id, refuses a malformed plan or one made by another agemon version, and
|
|
927
|
+
never touches a path outside the repository, inside `.git/`, or under a symlinked
|
|
928
|
+
directory. It also plans again with this run's options (`--only`, `--skip-daemon`,
|
|
929
|
+
`--skill-groups`, `agemon.toml`) and refuses unless the result is identical to the stored
|
|
930
|
+
plan, so it applies exactly what you reviewed — never an edited preview, risk class or
|
|
931
|
+
operation. Pass the same options you gave `agemon plan`. agemon refuses to use `.agemon/` (or any directory in it) when it is a symlink.
|
|
932
|
+
- `inspect`, `status` and `plan` never follow a symlinked or special file and never read a
|
|
933
|
+
file larger than 8 MiB; such a file is reported as present but unread.
|
|
934
|
+
|
|
935
|
+
### Interrupted applies
|
|
936
|
+
|
|
937
|
+
Before an apply changes anything, agemon writes a journal with the pre-apply contents of
|
|
938
|
+
every file it will write and a copy of the ledger. The journal lives outside the
|
|
939
|
+
repository, in `${XDG_STATE_HOME:-~/.local/state}/agemon/journals/` (macOS:
|
|
940
|
+
`~/Library/Application Support/agemon/journals/`; directory mode `0700`,
|
|
941
|
+
file mode `0600`), so repository contents cannot forge one. It is deleted when the apply
|
|
942
|
+
succeeds or rolls back cleanly.
|
|
943
|
+
|
|
944
|
+
- **Ctrl-C, `SIGTERM` or `SIGHUP` during an apply:** agemon finishes the current step, rolls
|
|
945
|
+
back, and exits `130`, `143` or `129`. Press Ctrl-C a second time to stop at once.
|
|
946
|
+
- **The process was killed or the machine lost power:** the journal stays behind. Every
|
|
947
|
+
later `agemon`, `agemon apply` and `agemon nuke` in that repository refuses to start and
|
|
948
|
+
points to `agemon recover`.
|
|
949
|
+
- **`agemon recover`** shows what it will restore, then asks (or proceeds with `--yes`;
|
|
950
|
+
`--dry-run` only shows). It restores files the apply wrote, reverts what the apply
|
|
951
|
+
recorded in the ledger, and restores the ledger. A file you edited after the interruption
|
|
952
|
+
is kept as is, with agemon's ledger entry for it, and its pre-apply contents are saved
|
|
953
|
+
beside it as `<file>.agemon-original`. A failed apply treats a file edited during the run
|
|
954
|
+
the same way.
|
|
955
|
+
- **Limit:** work a capability had started but not yet recorded when the process died is not
|
|
956
|
+
undone; check `agemon status` afterwards. Interrupted writes can leave
|
|
957
|
+
`<file>.tmp-<pid>-<id>` files next to their targets; delete them if present.
|
|
90
958
|
|
|
91
959
|
## Managed Outputs
|
|
92
960
|
|
|
93
961
|
By default, agemon may manage these paths:
|
|
94
962
|
|
|
95
963
|
- `.agemon/state.json`
|
|
96
|
-
- `.agemon/backups
|
|
97
|
-
-
|
|
98
|
-
- `.github/workflows/code-review-graph-action.yml`
|
|
964
|
+
- `.agemon/backups/*.bak`
|
|
965
|
+
- `<rule file>.agemon-original` (only when an edited file is preserved on uninstall)
|
|
99
966
|
- `AGENTS.md`
|
|
100
967
|
- `CLAUDE.md`
|
|
101
968
|
- `GEMINI.md`
|
|
102
969
|
- `.cursorrules`
|
|
103
970
|
- `.windsurfrules`
|
|
971
|
+
- `.claude/agents/<name>.md` (the subagents of installed skill groups)
|
|
972
|
+
- `env.CLAUDE_CODE_SUBAGENT_MODEL` in `.claude/settings.json` (only this key; see
|
|
973
|
+
[Default subagent model](#default-subagent-model))
|
|
974
|
+
- `agemon.toml` (written on the first run; rewritten once when a capability is added)
|
|
975
|
+
|
|
976
|
+
It also invokes external installers (`pipx`, `npm -g`, the pinned `skills` CLI) when required.
|
|
977
|
+
Every third-party tool is pinned to an exact version
|
|
978
|
+
(`src/plugins/pins.ts`, `assets/tools/package-lock.json`), and every vendored skill records the
|
|
979
|
+
upstream commit it was copied from in its `NOTICE.md`. agnix is installed with
|
|
980
|
+
`npm install --global --ignore-scripts agnix@<pin>`, so its own download script never runs;
|
|
981
|
+
agemon then downloads the binary from the matching GitHub release itself and installs it only
|
|
982
|
+
if the archive matches a sha256 pinned in `src/plugins/pins.ts`.
|
|
104
983
|
|
|
105
|
-
|
|
984
|
+
Machine-level caches outside the repo, under `${XDG_STATE_HOME:-~/.local/state}/agemon/`
|
|
985
|
+
(macOS: `~/Library/Application Support/agemon/`), are
|
|
986
|
+
kept by `nuke` because every repo on the machine shares them:
|
|
987
|
+
|
|
988
|
+
- `tools/<hash>/`: the `skills` CLI, installed from `assets/tools/package-lock.json`
|
|
989
|
+
- `skills-src/<commit>/`: the pinned checkout of a custom skill group's GitHub source that `skills add` installs from
|
|
990
|
+
- `usage/<repo key>.json`: the numbers `agemon usage` has saved for a repository
|
|
991
|
+
- `machine.json`: which repositories use code-review-graph, agnix and user linger, and who
|
|
992
|
+
installed or enabled them
|
|
106
993
|
|
|
107
994
|
## Local Development
|
|
108
995
|
|
|
@@ -148,6 +1035,7 @@ Useful sandbox flags:
|
|
|
148
1035
|
- `--quiet`: suppress captured terminal output.
|
|
149
1036
|
- `--skip-daemon`: skip daemon plugin in the run.
|
|
150
1037
|
- `--only <plugins>`: run selected plugins only.
|
|
1038
|
+
- `--skill-groups <ids>`: pass skill groups through to the install run.
|
|
151
1039
|
|
|
152
1040
|
## Detailed Docs
|
|
153
1041
|
|
|
@@ -156,13 +1044,78 @@ Useful sandbox flags:
|
|
|
156
1044
|
- Audit and review report: `docs/review-2026-08-13.md`
|
|
157
1045
|
- Historical implementation plan: `docs/implementation-plan.md`
|
|
158
1046
|
|
|
1047
|
+
## Vendored Skills & Attribution
|
|
1048
|
+
|
|
1049
|
+
The `essentials`, `design`, `security`, `code-quality`, `architecture`, `self-review`, `performance`, `commit`,
|
|
1050
|
+
`workflow`, `output-style`, `founder`, `teamlead` and `geo-seo` skill groups (see [Skill Groups](#skill-groups)) are vendored under
|
|
1051
|
+
`assets/skills/<group>/<skill>/`.
|
|
1052
|
+
Each vendored skill directory carries a `NOTICE.md` (source repo, exact commit, retrieval date)
|
|
1053
|
+
and a copy of its upstream `LICENSE`. Sources, MIT-licensed except where noted. Some `agemon-design` text is Apache-2.0: `references/tells-2026-11.md` and the plan-and-review steps of `references/stage-build.md` are adapted from Anthropic's `frontend-design` skill (https://github.com/anthropics/skills), with the licence text in `references/third-party-licenses.md`:
|
|
1054
|
+
|
|
1055
|
+
Every skill vendored from a third-party project is renamed to an `agemon-*` identity (frontmatter
|
|
1056
|
+
`name` and directory) — it should never be obvious from installing it that the content originated
|
|
1057
|
+
elsewhere. Original upstream names are preserved only in each skill's `NOTICE.md`, for attribution.
|
|
1058
|
+
The project-authored `team-lead` skills beyond `agemon-plan-rfc` and `prd-generator` have no
|
|
1059
|
+
upstream to rename from and keep their original `skill-*` names — see the table below.
|
|
1060
|
+
The `geo-seo` group keeps its upstream `geo-*` names so `/geo audit` and the other commands match
|
|
1061
|
+
the upstream project's documentation. The `essentials` group keeps its upstream names too, so repositories
|
|
1062
|
+
that already have those skills recognise them and can update them.
|
|
1063
|
+
|
|
1064
|
+
| Renamed to | Originally | Source |
|
|
1065
|
+
|---|---|---|
|
|
1066
|
+
| `agemon-design` | `ui-craft` + 3 recipe variants, now presets (open fork; see its `NOTICE.md`) | [educlopez/ui-craft](https://github.com/educlopez/ui-craft) |
|
|
1067
|
+
| `agemon-security` | `security-review` (also avoids colliding with Claude Code's own built-in skill of the same name) | [Dilaz/security-review-skill](https://github.com/Dilaz/security-review-skill) |
|
|
1068
|
+
| `agemon-security-audit` | `security-audit` | [cloudflare/security-audit-skill](https://github.com/cloudflare/security-audit-skill) |
|
|
1069
|
+
| `agemon-brainstorming`, `agemon-writing-plans`, `agemon-executing-plans`, `agemon-subagent-driven-development`, `agemon-test-driven-development`, `agemon-using-git-worktrees`, `agemon-dispatching-parallel-agents`, `agemon-finishing-a-development-branch` | the same names without `agemon-` | [obra/superpowers](https://github.com/obra/superpowers) |
|
|
1070
|
+
| `web-design-guidelines` | `command.md` of `web-interface-guidelines`, with a wrapper that reads it instead of fetching it | [vercel-labs/web-interface-guidelines](https://github.com/vercel-labs/web-interface-guidelines) |
|
|
1071
|
+
| `writing-guidelines` | `command.md` of `writing-guidelines`, with a wrapper that reads it instead of fetching it | [vercel-labs/writing-guidelines](https://github.com/vercel-labs/writing-guidelines) |
|
|
1072
|
+
| `agemon-adhd` | `i-have-adhd` | [ayghri/i-have-adhd](https://github.com/ayghri/i-have-adhd) |
|
|
1073
|
+
| `agemon-founder-board` and the other `agemon-founder-*` skills | `founder-board` and the other `founder-*` skills | [Jakeschincariol/founder-skill](https://github.com/Jakeschincariol/founder-skill) |
|
|
1074
|
+
| `agemon-architecture` | `clean-architecture` | [nathankim0/clean-architecture-skills](https://github.com/nathankim0/clean-architecture-skills) |
|
|
1075
|
+
| `agemon-verify-before-done`, `agemon-review-intake`, `agemon-review-request`, `agemon-root-cause` | `verification-before-completion`, `receiving-code-review`, `requesting-code-review`, `systematic-debugging` | [obra/superpowers](https://github.com/obra/superpowers) (cherry-picked; not a full vendor of that framework) |
|
|
1076
|
+
| `agemon-clean-code` | `karpathy-guidelines` | [swarmclawai/andrej-karpathy-skills](https://github.com/swarmclawai/andrej-karpathy-skills) |
|
|
1077
|
+
| `agemon-house-rules`, `agemon-performance`, `agemon-commit`, `agemon-plan-rfc`, `prd-generator`, `skill-headofit-audit`, `skill-incident-rca`, `skill-meeting-lifecycle`, `skill-obsidian-vault-sync`, `skill-prd-decomposer`, `skill-sec-check`, `skill-task-extractor`, `skill-techlead-reviewer`, `skill-tech-spike` | — | Original — authored for this project, `agemon-house-rules` distilled from this repo's own `AGENTS.md`. The `team-lead` skills beyond `agemon-plan-rfc` and `prd-generator` keep their original `skill-*` names rather than the `agemon-*` convention. |
|
|
1078
|
+
|
|
1079
|
+
`agemon-design`'s reference files still say "ui-craft" in two places: an older project's
|
|
1080
|
+
`.ui-craft/` directory, which the skill reads but never rewrites (new files go in `.design/`), and
|
|
1081
|
+
a few "clashes with ui-craft rules" headings in `references/stack.md`. Commands, tools and agents that agemon does not ship are
|
|
1082
|
+
gone, and `npm run lint-skills` fails if one comes back in `agemon-design` or a link in the skill points at a missing
|
|
1083
|
+
file; the skill's own identity (what gets installed, listed, and invoked) is fully renamed.
|
|
1084
|
+
|
|
1085
|
+
`geo-seo` is vendored from [zubair-trabzada/geo-seo-claude](https://github.com/zubair-trabzada/geo-seo-claude)
|
|
1086
|
+
(MIT, commit `989cae0`). It ships 12 of upstream's skills; the self-updater, the Python scripts,
|
|
1087
|
+
the CRM/proposal skills and the examples are left out. These skills read untrusted website
|
|
1088
|
+
content, so agemon's copy changes them in ways each skill's `NOTICE.md` lists in full:
|
|
1089
|
+
|
|
1090
|
+
- no skill pre-approves any tool, so every web fetch to a new domain, file write and shell
|
|
1091
|
+
command asks for your approval;
|
|
1092
|
+
- every skill and subagent brief starts with an untrusted-content rule;
|
|
1093
|
+
- the five audit subagents are installed as project agents (`geo-audit-*`, see
|
|
1094
|
+
[Subagents](#subagents)) whose system prompt is the brief in `geo-audit/references/`,
|
|
1095
|
+
with only the tools they need; without them, `geo-audit` falls back to general-purpose
|
|
1096
|
+
subagents given the same briefs;
|
|
1097
|
+
- raw HTML and headers come from one fixed, read-only `curl` command that you approve per run;
|
|
1098
|
+
- the PDF step builds its cover from checked values in a metadata file, runs pandoc sandboxed
|
|
1099
|
+
with raw HTML off, and prints with a sandboxed Chrome under a strict Content-Security-Policy.
|
|
1100
|
+
|
|
1101
|
+
If you installed upstream geo-seo-claude as personal skills (`~/.claude/skills/geo*`), run its
|
|
1102
|
+
`uninstall.sh` first: Claude Code prefers personal skills over project skills of the same name,
|
|
1103
|
+
so `/geo` would otherwise run that copy. `geo-report-pdf` needs pandoc 3.0+ and Chrome or
|
|
1104
|
+
Chromium.
|
|
1105
|
+
|
|
159
1106
|
## Roadmap Notes
|
|
160
1107
|
|
|
1108
|
+
Shipped:
|
|
1109
|
+
|
|
1110
|
+
- Read-only agent detection (`agemon inspect`'s "Agents" section, `--check-agents-usable`)
|
|
1111
|
+
for Claude Code, Gemini CLI, and Copilot. Delegating work to a detected agent is not yet
|
|
1112
|
+
built.
|
|
1113
|
+
|
|
161
1114
|
Planned but not currently implemented:
|
|
162
1115
|
|
|
163
|
-
- Dedicated `status` command.
|
|
164
1116
|
- Dedicated `doctor` command.
|
|
165
|
-
- Native Windows
|
|
1117
|
+
- Native Windows support.
|
|
1118
|
+
- Agent delegation (`agemon delegate`/`agemon handoff`).
|
|
166
1119
|
|
|
167
1120
|
## License
|
|
168
1121
|
|