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.
Files changed (269) hide show
  1. package/README.md +983 -30
  2. package/assets/skills/architecture/agemon-architecture/LICENSE +21 -0
  3. package/assets/skills/architecture/agemon-architecture/NOTICE.md +9 -0
  4. package/assets/skills/architecture/agemon-architecture/SKILL.md +275 -0
  5. package/assets/skills/code-quality/agemon-clean-code/LICENSE +21 -0
  6. package/assets/skills/code-quality/agemon-clean-code/NOTICE.md +9 -0
  7. package/assets/skills/code-quality/agemon-clean-code/SKILL.md +78 -0
  8. package/assets/skills/code-quality/agemon-house-rules/SKILL.md +103 -0
  9. package/assets/skills/commit/agemon-commit/SKILL.md +87 -0
  10. package/assets/skills/design/agemon-design/LICENSE +21 -0
  11. package/assets/skills/design/agemon-design/NOTICE.md +43 -0
  12. package/assets/skills/design/agemon-design/SKILL.md +128 -0
  13. package/assets/skills/design/agemon-design/references/accessibility.md +182 -0
  14. package/assets/skills/design/agemon-design/references/actions.md +215 -0
  15. package/assets/skills/design/agemon-design/references/ai-chat.md +158 -0
  16. package/assets/skills/design/agemon-design/references/brief.md +190 -0
  17. package/assets/skills/design/agemon-design/references/color.md +216 -0
  18. package/assets/skills/design/agemon-design/references/components.md +91 -0
  19. package/assets/skills/design/agemon-design/references/copy.md +300 -0
  20. package/assets/skills/design/agemon-design/references/core-rules.md +166 -0
  21. package/assets/skills/design/agemon-design/references/craft-intent.md +162 -0
  22. package/assets/skills/design/agemon-design/references/dashboard.md +131 -0
  23. package/assets/skills/design/agemon-design/references/dataviz.md +197 -0
  24. package/assets/skills/design/agemon-design/references/finish-bar.md +243 -0
  25. package/assets/skills/design/agemon-design/references/forms.md +192 -0
  26. package/assets/skills/design/agemon-design/references/heuristics.md +319 -0
  27. package/assets/skills/design/agemon-design/references/inspiration.md +287 -0
  28. package/assets/skills/design/agemon-design/references/layout.md +236 -0
  29. package/assets/skills/design/agemon-design/references/loops.md +155 -0
  30. package/assets/skills/design/agemon-design/references/metadata.md +98 -0
  31. package/assets/skills/design/agemon-design/references/modern-css.md +448 -0
  32. package/assets/skills/design/agemon-design/references/motion.md +434 -0
  33. package/assets/skills/design/agemon-design/references/personas.md +206 -0
  34. package/assets/skills/design/agemon-design/references/preset-dashboard.md +109 -0
  35. package/assets/skills/design/agemon-design/references/preset-editorial.md +94 -0
  36. package/assets/skills/design/agemon-design/references/preset-minimal.md +93 -0
  37. package/assets/skills/design/agemon-design/references/principles-catalog.md +299 -0
  38. package/assets/skills/design/agemon-design/references/recipe-auth.md +88 -0
  39. package/assets/skills/design/agemon-design/references/recipe-dashboard.md +130 -0
  40. package/assets/skills/design/agemon-design/references/recipe-landing.md +120 -0
  41. package/assets/skills/design/agemon-design/references/responsive.md +168 -0
  42. package/assets/skills/design/agemon-design/references/review.md +340 -0
  43. package/assets/skills/design/agemon-design/references/routing.md +143 -0
  44. package/assets/skills/design/agemon-design/references/sound.md +150 -0
  45. package/assets/skills/design/agemon-design/references/spec.md +123 -0
  46. package/assets/skills/design/agemon-design/references/stack.md +522 -0
  47. package/assets/skills/design/agemon-design/references/stage-assets.md +106 -0
  48. package/assets/skills/design/agemon-design/references/stage-build.md +46 -0
  49. package/assets/skills/design/agemon-design/references/stage-critique.md +34 -0
  50. package/assets/skills/design/agemon-design/references/stage-directions.md +44 -0
  51. package/assets/skills/design/agemon-design/references/stage-intake.md +34 -0
  52. package/assets/skills/design/agemon-design/references/stage-verify.md +44 -0
  53. package/assets/skills/design/agemon-design/references/state-design.md +188 -0
  54. package/assets/skills/design/agemon-design/references/tells-2026-11.md +32 -0
  55. package/assets/skills/design/agemon-design/references/themes.md +233 -0
  56. package/assets/skills/design/agemon-design/references/third-party-licenses.md +323 -0
  57. package/assets/skills/design/agemon-design/references/tokens.md +350 -0
  58. package/assets/skills/design/agemon-design/references/typography.md +248 -0
  59. package/assets/skills/design/agemon-design/scripts/audit-page.js +532 -0
  60. package/assets/skills/design/agemon-design/scripts/check-source.mjs +358 -0
  61. package/assets/skills/design/agemon-design/scripts/deal.mjs +231 -0
  62. package/assets/skills/design/agemon-design/scripts/inventory.mjs +676 -0
  63. package/assets/skills/essentials/web-design-guidelines/LICENSE +21 -0
  64. package/assets/skills/essentials/web-design-guidelines/NOTICE.md +14 -0
  65. package/assets/skills/essentials/web-design-guidelines/SKILL.md +18 -0
  66. package/assets/skills/essentials/web-design-guidelines/references/guidelines.md +184 -0
  67. package/assets/skills/essentials/writing-guidelines/LICENSE +21 -0
  68. package/assets/skills/essentials/writing-guidelines/NOTICE.md +14 -0
  69. package/assets/skills/essentials/writing-guidelines/SKILL.md +18 -0
  70. package/assets/skills/essentials/writing-guidelines/references/guidelines.md +250 -0
  71. package/assets/skills/founder/agemon-founder-board/LICENSE +21 -0
  72. package/assets/skills/founder/agemon-founder-board/NOTICE.md +11 -0
  73. package/assets/skills/founder/agemon-founder-board/SKILL.md +111 -0
  74. package/assets/skills/founder/agemon-founder-board/lenses.md +84 -0
  75. package/assets/skills/founder/agemon-founder-brand/LICENSE +21 -0
  76. package/assets/skills/founder/agemon-founder-brand/NOTICE.md +12 -0
  77. package/assets/skills/founder/agemon-founder-brand/SKILL.md +77 -0
  78. package/assets/skills/founder/agemon-founder-cfo/LICENSE +21 -0
  79. package/assets/skills/founder/agemon-founder-cfo/NOTICE.md +12 -0
  80. package/assets/skills/founder/agemon-founder-cfo/SKILL.md +109 -0
  81. package/assets/skills/founder/agemon-founder-cfo/example.json +27 -0
  82. package/assets/skills/founder/agemon-founder-cfo/unit_economics.py +270 -0
  83. package/assets/skills/founder/agemon-founder-competitors/LICENSE +21 -0
  84. package/assets/skills/founder/agemon-founder-competitors/NOTICE.md +12 -0
  85. package/assets/skills/founder/agemon-founder-competitors/SKILL.md +84 -0
  86. package/assets/skills/founder/agemon-founder-consumer/LICENSE +21 -0
  87. package/assets/skills/founder/agemon-founder-consumer/NOTICE.md +11 -0
  88. package/assets/skills/founder/agemon-founder-consumer/SKILL.md +126 -0
  89. package/assets/skills/founder/agemon-founder-consumer/customer.example.json +34 -0
  90. package/assets/skills/founder/agemon-founder-consumer/panel.py +424 -0
  91. package/assets/skills/founder/agemon-founder-consumer/pitch.example.md +3 -0
  92. package/assets/skills/founder/agemon-founder-launch/LICENSE +21 -0
  93. package/assets/skills/founder/agemon-founder-launch/NOTICE.md +11 -0
  94. package/assets/skills/founder/agemon-founder-launch/SKILL.md +65 -0
  95. package/assets/skills/founder/agemon-founder-marketing/LICENSE +21 -0
  96. package/assets/skills/founder/agemon-founder-marketing/NOTICE.md +11 -0
  97. package/assets/skills/founder/agemon-founder-marketing/SKILL.md +80 -0
  98. package/assets/skills/founder/agemon-founder-offer/LICENSE +21 -0
  99. package/assets/skills/founder/agemon-founder-offer/NOTICE.md +11 -0
  100. package/assets/skills/founder/agemon-founder-offer/SKILL.md +75 -0
  101. package/assets/skills/founder/agemon-founder-ops/LICENSE +21 -0
  102. package/assets/skills/founder/agemon-founder-ops/NOTICE.md +12 -0
  103. package/assets/skills/founder/agemon-founder-ops/SKILL.md +77 -0
  104. package/assets/skills/founder/agemon-founder-plan/LICENSE +21 -0
  105. package/assets/skills/founder/agemon-founder-plan/NOTICE.md +11 -0
  106. package/assets/skills/founder/agemon-founder-plan/SKILL.md +88 -0
  107. package/assets/skills/founder/agemon-founder-plan/compile.py +178 -0
  108. package/assets/skills/founder/agemon-founder-pricing/LICENSE +21 -0
  109. package/assets/skills/founder/agemon-founder-pricing/NOTICE.md +12 -0
  110. package/assets/skills/founder/agemon-founder-pricing/SKILL.md +92 -0
  111. package/assets/skills/founder/agemon-founder-pricing/van_westendorp.py +172 -0
  112. package/assets/skills/geo-seo/geo/LICENSE +21 -0
  113. package/assets/skills/geo-seo/geo/NOTICE.md +18 -0
  114. package/assets/skills/geo-seo/geo/SKILL.md +145 -0
  115. package/assets/skills/geo-seo/geo-audit/LICENSE +21 -0
  116. package/assets/skills/geo-seo/geo-audit/NOTICE.md +17 -0
  117. package/assets/skills/geo-seo/geo-audit/SKILL.md +371 -0
  118. package/assets/skills/geo-seo/geo-audit/references/ai-visibility.md +233 -0
  119. package/assets/skills/geo-seo/geo-audit/references/content.md +329 -0
  120. package/assets/skills/geo-seo/geo-audit/references/platform-analysis.md +294 -0
  121. package/assets/skills/geo-seo/geo-audit/references/schema.md +383 -0
  122. package/assets/skills/geo-seo/geo-audit/references/technical.md +368 -0
  123. package/assets/skills/geo-seo/geo-brand-mentions/LICENSE +21 -0
  124. package/assets/skills/geo-seo/geo-brand-mentions/NOTICE.md +15 -0
  125. package/assets/skills/geo-seo/geo-brand-mentions/SKILL.md +459 -0
  126. package/assets/skills/geo-seo/geo-citability/LICENSE +21 -0
  127. package/assets/skills/geo-seo/geo-citability/NOTICE.md +14 -0
  128. package/assets/skills/geo-seo/geo-citability/SKILL.md +320 -0
  129. package/assets/skills/geo-seo/geo-content/LICENSE +21 -0
  130. package/assets/skills/geo-seo/geo-content/NOTICE.md +14 -0
  131. package/assets/skills/geo-seo/geo-content/SKILL.md +352 -0
  132. package/assets/skills/geo-seo/geo-crawlers/LICENSE +21 -0
  133. package/assets/skills/geo-seo/geo-crawlers/NOTICE.md +15 -0
  134. package/assets/skills/geo-seo/geo-crawlers/SKILL.md +388 -0
  135. package/assets/skills/geo-seo/geo-llmstxt/LICENSE +21 -0
  136. package/assets/skills/geo-seo/geo-llmstxt/NOTICE.md +14 -0
  137. package/assets/skills/geo-seo/geo-llmstxt/SKILL.md +433 -0
  138. package/assets/skills/geo-seo/geo-platform-optimizer/LICENSE +21 -0
  139. package/assets/skills/geo-seo/geo-platform-optimizer/NOTICE.md +14 -0
  140. package/assets/skills/geo-seo/geo-platform-optimizer/SKILL.md +282 -0
  141. package/assets/skills/geo-seo/geo-report/LICENSE +21 -0
  142. package/assets/skills/geo-seo/geo-report/NOTICE.md +14 -0
  143. package/assets/skills/geo-seo/geo-report/SKILL.md +406 -0
  144. package/assets/skills/geo-seo/geo-report-pdf/LICENSE +21 -0
  145. package/assets/skills/geo-seo/geo-report-pdf/NOTICE.md +20 -0
  146. package/assets/skills/geo-seo/geo-report-pdf/SKILL.md +153 -0
  147. package/assets/skills/geo-seo/geo-report-pdf/templates/geo-report-template.html +548 -0
  148. package/assets/skills/geo-seo/geo-schema/LICENSE +21 -0
  149. package/assets/skills/geo-seo/geo-schema/NOTICE.md +16 -0
  150. package/assets/skills/geo-seo/geo-schema/SKILL.md +396 -0
  151. package/assets/skills/geo-seo/geo-technical/LICENSE +21 -0
  152. package/assets/skills/geo-seo/geo-technical/NOTICE.md +15 -0
  153. package/assets/skills/geo-seo/geo-technical/SKILL.md +566 -0
  154. package/assets/skills/output-style/agemon-adhd/LICENSE +21 -0
  155. package/assets/skills/output-style/agemon-adhd/NOTICE.md +13 -0
  156. package/assets/skills/output-style/agemon-adhd/SKILL.md +138 -0
  157. package/assets/skills/performance/agemon-performance/NOTICE.md +1 -0
  158. package/assets/skills/performance/agemon-performance/SKILL.md +76 -0
  159. package/assets/skills/security/agemon-security/LICENSE +21 -0
  160. package/assets/skills/security/agemon-security/NOTICE.md +8 -0
  161. package/assets/skills/security/agemon-security/SKILL.md +356 -0
  162. package/assets/skills/security/agemon-security-audit/AI-AND-LLM.md +83 -0
  163. package/assets/skills/security/agemon-security-audit/ATTACK-CLASSES.md +130 -0
  164. package/assets/skills/security/agemon-security-audit/CLIENT-SIDE.md +83 -0
  165. package/assets/skills/security/agemon-security-audit/CLOUD-AND-DEPLOYMENT.md +86 -0
  166. package/assets/skills/security/agemon-security-audit/DATA-ISOLATION-AND-LIFECYCLE.md +84 -0
  167. package/assets/skills/security/agemon-security-audit/DESKTOP-MOBILE-AND-LOCAL-IPC.md +89 -0
  168. package/assets/skills/security/agemon-security-audit/HUNTING.md +251 -0
  169. package/assets/skills/security/agemon-security-audit/LICENSE +21 -0
  170. package/assets/skills/security/agemon-security-audit/MEMORY-SAFETY-AND-BINARY.md +101 -0
  171. package/assets/skills/security/agemon-security-audit/NOTICE.md +12 -0
  172. package/assets/skills/security/agemon-security-audit/PROTOCOLS-RPC-AND-MESSAGING.md +81 -0
  173. package/assets/skills/security/agemon-security-audit/RECONNAISSANCE.md +156 -0
  174. package/assets/skills/security/agemon-security-audit/RESOURCE-EXHAUSTION-AND-AVAILABILITY.md +78 -0
  175. package/assets/skills/security/agemon-security-audit/SKILL.md +192 -0
  176. package/assets/skills/security/agemon-security-audit/SUPPLY-CHAIN-AND-RELEASE.md +73 -0
  177. package/assets/skills/security/agemon-security-audit/VALIDATION-AND-REPORTING.md +186 -0
  178. package/assets/skills/security/agemon-security-audit/WEB-PROTOCOL-AND-AUTH.md +105 -0
  179. package/assets/skills/security/agemon-security-audit/report-schema.json +461 -0
  180. package/assets/skills/security/agemon-security-audit/validate-coverage-ledger.cjs +872 -0
  181. package/assets/skills/security/agemon-security-audit/validate-findings.cjs +773 -0
  182. package/assets/skills/self-review/agemon-review-intake/LICENSE +21 -0
  183. package/assets/skills/self-review/agemon-review-intake/NOTICE.md +9 -0
  184. package/assets/skills/self-review/agemon-review-intake/SKILL.md +205 -0
  185. package/assets/skills/self-review/agemon-review-request/LICENSE +21 -0
  186. package/assets/skills/self-review/agemon-review-request/NOTICE.md +9 -0
  187. package/assets/skills/self-review/agemon-review-request/SKILL.md +104 -0
  188. package/assets/skills/self-review/agemon-review-request/code-reviewer.md +188 -0
  189. package/assets/skills/self-review/agemon-root-cause/LICENSE +21 -0
  190. package/assets/skills/self-review/agemon-root-cause/NOTICE.md +10 -0
  191. package/assets/skills/self-review/agemon-root-cause/SKILL.md +283 -0
  192. package/assets/skills/self-review/agemon-root-cause/condition-based-waiting-example.ts +158 -0
  193. package/assets/skills/self-review/agemon-root-cause/condition-based-waiting.md +115 -0
  194. package/assets/skills/self-review/agemon-root-cause/defense-in-depth.md +122 -0
  195. package/assets/skills/self-review/agemon-root-cause/find-polluter.sh +72 -0
  196. package/assets/skills/self-review/agemon-root-cause/root-cause-tracing.md +169 -0
  197. package/assets/skills/self-review/agemon-root-cause/test-academic.md +14 -0
  198. package/assets/skills/self-review/agemon-root-cause/test-pressure-1.md +58 -0
  199. package/assets/skills/self-review/agemon-root-cause/test-pressure-2.md +68 -0
  200. package/assets/skills/self-review/agemon-root-cause/test-pressure-3.md +69 -0
  201. package/assets/skills/self-review/agemon-verify-before-done/LICENSE +21 -0
  202. package/assets/skills/self-review/agemon-verify-before-done/NOTICE.md +9 -0
  203. package/assets/skills/self-review/agemon-verify-before-done/SKILL.md +120 -0
  204. package/assets/skills/team-lead/agemon-plan-rfc/SKILL.md +317 -0
  205. package/assets/skills/team-lead/prd-generator/SKILL.md +437 -0
  206. package/assets/skills/team-lead/skill-headofit-audit/SKILL.md +72 -0
  207. package/assets/skills/team-lead/skill-incident-rca/SKILL.md +66 -0
  208. package/assets/skills/team-lead/skill-meeting-lifecycle/SKILL.md +63 -0
  209. package/assets/skills/team-lead/skill-obsidian-vault-sync/SKILL.md +69 -0
  210. package/assets/skills/team-lead/skill-prd-decomposer/SKILL.md +71 -0
  211. package/assets/skills/team-lead/skill-sec-check/SKILL.md +70 -0
  212. package/assets/skills/team-lead/skill-task-extractor/SKILL.md +79 -0
  213. package/assets/skills/team-lead/skill-tech-spike/SKILL.md +57 -0
  214. package/assets/skills/team-lead/skill-techlead-reviewer/SKILL.md +81 -0
  215. package/assets/skills/workflow/agemon-brainstorming/LICENSE +21 -0
  216. package/assets/skills/workflow/agemon-brainstorming/NOTICE.md +14 -0
  217. package/assets/skills/workflow/agemon-brainstorming/SKILL.md +287 -0
  218. package/assets/skills/workflow/agemon-brainstorming/builder-check-prompt.md +23 -0
  219. package/assets/skills/workflow/agemon-dispatching-parallel-agents/LICENSE +21 -0
  220. package/assets/skills/workflow/agemon-dispatching-parallel-agents/NOTICE.md +13 -0
  221. package/assets/skills/workflow/agemon-dispatching-parallel-agents/SKILL.md +167 -0
  222. package/assets/skills/workflow/agemon-executing-plans/LICENSE +21 -0
  223. package/assets/skills/workflow/agemon-executing-plans/NOTICE.md +15 -0
  224. package/assets/skills/workflow/agemon-executing-plans/SKILL.md +322 -0
  225. package/assets/skills/workflow/agemon-executing-plans/scripts/task-done +55 -0
  226. package/assets/skills/workflow/agemon-executing-plans/scripts/task-start +32 -0
  227. package/assets/skills/workflow/agemon-finishing-a-development-branch/LICENSE +21 -0
  228. package/assets/skills/workflow/agemon-finishing-a-development-branch/NOTICE.md +13 -0
  229. package/assets/skills/workflow/agemon-finishing-a-development-branch/SKILL.md +225 -0
  230. package/assets/skills/workflow/agemon-subagent-driven-development/LICENSE +21 -0
  231. package/assets/skills/workflow/agemon-subagent-driven-development/NOTICE.md +15 -0
  232. package/assets/skills/workflow/agemon-subagent-driven-development/SKILL.md +339 -0
  233. package/assets/skills/workflow/agemon-subagent-driven-development/code-reviewer.md +198 -0
  234. package/assets/skills/workflow/agemon-subagent-driven-development/implementer-prompt.md +154 -0
  235. package/assets/skills/workflow/agemon-subagent-driven-development/re-review-prompt.md +116 -0
  236. package/assets/skills/workflow/agemon-subagent-driven-development/references/batching.md +11 -0
  237. package/assets/skills/workflow/agemon-subagent-driven-development/references/cannot-verify.md +10 -0
  238. package/assets/skills/workflow/agemon-subagent-driven-development/references/final-review.md +49 -0
  239. package/assets/skills/workflow/agemon-subagent-driven-development/references/fix-loop.md +77 -0
  240. package/assets/skills/workflow/agemon-subagent-driven-development/references/handling-reports.md +15 -0
  241. package/assets/skills/workflow/agemon-subagent-driven-development/references/preflight.md +26 -0
  242. package/assets/skills/workflow/agemon-subagent-driven-development/references/resuming.md +12 -0
  243. package/assets/skills/workflow/agemon-subagent-driven-development/references/role-scout.md +18 -0
  244. package/assets/skills/workflow/agemon-subagent-driven-development/references/role-worker.md +19 -0
  245. package/assets/skills/workflow/agemon-subagent-driven-development/scripts/review-package +64 -0
  246. package/assets/skills/workflow/agemon-subagent-driven-development/scripts/sdd-repo +54 -0
  247. package/assets/skills/workflow/agemon-subagent-driven-development/scripts/sdd-workspace +110 -0
  248. package/assets/skills/workflow/agemon-subagent-driven-development/scripts/task-brief +108 -0
  249. package/assets/skills/workflow/agemon-subagent-driven-development/task-reviewer-prompt.md +209 -0
  250. package/assets/skills/workflow/agemon-test-driven-development/LICENSE +21 -0
  251. package/assets/skills/workflow/agemon-test-driven-development/NOTICE.md +14 -0
  252. package/assets/skills/workflow/agemon-test-driven-development/SKILL.md +330 -0
  253. package/assets/skills/workflow/agemon-test-driven-development/writing-good-tests.md +198 -0
  254. package/assets/skills/workflow/agemon-using-git-worktrees/LICENSE +21 -0
  255. package/assets/skills/workflow/agemon-using-git-worktrees/NOTICE.md +13 -0
  256. package/assets/skills/workflow/agemon-using-git-worktrees/SKILL.md +167 -0
  257. package/assets/skills/workflow/agemon-writing-plans/LICENSE +21 -0
  258. package/assets/skills/workflow/agemon-writing-plans/NOTICE.md +13 -0
  259. package/assets/skills/workflow/agemon-writing-plans/SKILL.md +204 -0
  260. package/assets/tools/code-review-graph-constraints.txt +1418 -0
  261. package/assets/tools/package-lock.json +111 -0
  262. package/assets/tools/package.json +6 -0
  263. package/dist/chunk-ZZBF3GOV.js +3451 -0
  264. package/dist/chunk-ZZBF3GOV.js.map +1 -0
  265. package/dist/fake-subprocess-IV4ML77S.js +636 -0
  266. package/dist/fake-subprocess-IV4ML77S.js.map +1 -0
  267. package/dist/index.js +23836 -1945
  268. package/dist/index.js.map +1 -1
  269. package/package.json +37 -17
package/README.md CHANGED
@@ -1,30 +1,410 @@
1
1
  # agemon
2
2
 
3
+ [![CI](https://github.com/Korak-997/agemon/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/Korak-997/agemon/actions/workflows/ci.yml)
4
+ [![Release](https://img.shields.io/github/v/release/Korak-997/agemon)](https://github.com/Korak-997/agemon/releases/latest)
5
+ [![npm](https://img.shields.io/npm/v/agemon)](https://www.npmjs.com/package/agemon)
6
+ [![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/Korak-997/agemon/badge)](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
+ ![agemon installs the essentials bundle with --yes, agemon nuke removes everything it added, and git status --ignored shows the repository exactly as it was](docs/demo/agemon.gif)
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
- Current v0.1 behavior is plugin-driven and runs in this order:
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 `crg-daemon` autostart via `systemd --user`.
14
- 3. `skills`: installs bundled skills via `npx skills`.
15
- 4. `workflow-scaffolder`: writes bundled GitHub workflow files.
16
- 5. `cli-tool`: installs bundled global CLI tools.
17
- 6. `master-prompt`: consolidates agent rule files and pointer files.
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
- - Linux with Ubuntu (`/etc/os-release` must report `ID=ubuntu`).
25
- - Node.js `>=24`.
26
- - `npx`.
27
- - Binaries checked at runtime: `python3`, `pip`, `pipx`, `uv`, `crg`.
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
- Install in the current repository:
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
- npx agemon@latest install
423
+ npm install --global agemon
39
424
  ```
40
425
 
41
- Or use the local preflight script:
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 [options]
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`: show raw subprocess output beneath each step.
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
- npx agemon@latest install --dry-run
740
+ agemon --dry-run
76
741
 
77
- # Install only skills and workflows
78
- npx agemon@latest install --only skills,workflow-scaffolder
742
+ # Install every skill group non-interactively (e.g. in CI)
743
+ agemon --yes --skill-groups all
79
744
 
80
- # Reverse only specific plugins
81
- npx agemon@latest nuke --only skills,workflow-scaffolder
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
- - Master-prompt file edits are backed up in `.agemon/backups/master-prompt/` and restored
89
- on uninstall.
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/master-prompt/*.bak`
97
- - `.github/workflows/claude-code-security-review.yml`
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
- It also invokes external installers (`pipx`, `npm -g`, `npx skills`) when required.
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/macOS platform support.
1117
+ - Native Windows support.
1118
+ - Agent delegation (`agemon delegate`/`agemon handoff`).
166
1119
 
167
1120
  ## License
168
1121