nitm-ai-dev-toolkit 3.0.15

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 (754) hide show
  1. package/CHANGELOG.md +109 -0
  2. package/LICENSE +21 -0
  3. package/README.md +881 -0
  4. package/bin/cli.js +398 -0
  5. package/package.json +41 -0
  6. package/src/monorepo/.agents/rules/ponytail.md +3 -0
  7. package/src/monorepo/.agents/skills/acli/SKILL.md +424 -0
  8. package/src/monorepo/.agents/skills/bkt-cli/SKILL.md +374 -0
  9. package/src/monorepo/.agents/skills/brainstorming/SKILL.md +54 -0
  10. package/src/monorepo/.agents/skills/code-simplifier/SKILL.md +109 -0
  11. package/src/monorepo/.agents/skills/debugger/SKILL.md +123 -0
  12. package/src/monorepo/.agents/skills/dispatching-parallel-agents/SKILL.md +206 -0
  13. package/src/monorepo/.agents/skills/executing-plans/SKILL.md +76 -0
  14. package/src/monorepo/.agents/skills/finishing-a-development-branch/SKILL.md +200 -0
  15. package/src/monorepo/.agents/skills/gh-cli/SKILL.md +461 -0
  16. package/src/monorepo/.agents/skills/glab-cli/SKILL.md +468 -0
  17. package/src/monorepo/.agents/skills/issue-tracker/SKILL.md +119 -0
  18. package/src/monorepo/.agents/skills/linear-cli/SKILL.md +276 -0
  19. package/src/monorepo/.agents/skills/logging/SKILL.md +393 -0
  20. package/src/monorepo/.agents/skills/orient-to-recent-work/SKILL.md +43 -0
  21. package/src/monorepo/.agents/skills/ponytail/SKILL.md +101 -0
  22. package/src/monorepo/.agents/skills/ponytail-audit/SKILL.md +41 -0
  23. package/src/monorepo/.agents/skills/ponytail-debt/SKILL.md +44 -0
  24. package/src/monorepo/.agents/skills/ponytail-gain/SKILL.md +51 -0
  25. package/src/monorepo/.agents/skills/ponytail-help/SKILL.md +74 -0
  26. package/src/monorepo/.agents/skills/ponytail-review/SKILL.md +57 -0
  27. package/src/monorepo/.agents/skills/project-documentation/SKILL.md +425 -0
  28. package/src/monorepo/.agents/skills/receiving-code-review/SKILL.md +213 -0
  29. package/src/monorepo/.agents/skills/requesting-code-review/SKILL.md +105 -0
  30. package/src/monorepo/.agents/skills/requesting-code-review/code-reviewer.md +146 -0
  31. package/src/monorepo/.agents/skills/security-reviewer/SKILL.md +144 -0
  32. package/src/monorepo/.agents/skills/subagent-driven-development/SKILL.md +279 -0
  33. package/src/monorepo/.agents/skills/subagent-driven-development/code-quality-reviewer-prompt.md +20 -0
  34. package/src/monorepo/.agents/skills/subagent-driven-development/implementer-prompt.md +78 -0
  35. package/src/monorepo/.agents/skills/subagent-driven-development/spec-reviewer-prompt.md +61 -0
  36. package/src/monorepo/.agents/skills/systematic-debugging/CREATION-LOG.md +119 -0
  37. package/src/monorepo/.agents/skills/systematic-debugging/SKILL.md +296 -0
  38. package/src/monorepo/.agents/skills/systematic-debugging/condition-based-waiting-example.ts +158 -0
  39. package/src/monorepo/.agents/skills/systematic-debugging/condition-based-waiting.md +115 -0
  40. package/src/monorepo/.agents/skills/systematic-debugging/defense-in-depth.md +122 -0
  41. package/src/monorepo/.agents/skills/systematic-debugging/find-polluter.sh +63 -0
  42. package/src/monorepo/.agents/skills/systematic-debugging/root-cause-tracing.md +169 -0
  43. package/src/monorepo/.agents/skills/systematic-debugging/test-academic.md +14 -0
  44. package/src/monorepo/.agents/skills/systematic-debugging/test-pressure-1.md +58 -0
  45. package/src/monorepo/.agents/skills/systematic-debugging/test-pressure-2.md +68 -0
  46. package/src/monorepo/.agents/skills/systematic-debugging/test-pressure-3.md +69 -0
  47. package/src/monorepo/.agents/skills/test-driven-development/SKILL.md +371 -0
  48. package/src/monorepo/.agents/skills/test-driven-development/testing-anti-patterns.md +299 -0
  49. package/src/monorepo/.agents/skills/using-git-worktrees/SKILL.md +291 -0
  50. package/src/monorepo/.agents/skills/using-superpowers/SKILL.md +87 -0
  51. package/src/monorepo/.agents/skills/verification-before-completion/SKILL.md +148 -0
  52. package/src/monorepo/.agents/skills/writing-plans/SKILL.md +116 -0
  53. package/src/monorepo/.agents/skills/writing-skills/SKILL.md +655 -0
  54. package/src/monorepo/.agents/skills/writing-skills/anthropic-best-practices.md +1150 -0
  55. package/src/monorepo/.agents/skills/writing-skills/examples/CLAUDE_MD_TESTING.md +189 -0
  56. package/src/monorepo/.agents/skills/writing-skills/graphviz-conventions.dot +172 -0
  57. package/src/monorepo/.agents/skills/writing-skills/persuasion-principles.md +187 -0
  58. package/src/monorepo/.agents/skills/writing-skills/render-graphs.js +168 -0
  59. package/src/monorepo/.agents/skills/writing-skills/testing-skills-with-subagents.md +384 -0
  60. package/src/monorepo/.claude/agents/admin-portal.agent.md +11 -0
  61. package/src/monorepo/.claude/agents/api-specialist.agent.md +11 -0
  62. package/src/monorepo/.claude/agents/backend-architect.agent.md +11 -0
  63. package/src/monorepo/.claude/agents/documenter.agent.md +11 -0
  64. package/src/monorepo/.claude/agents/feature-builder.agent.md +23 -0
  65. package/src/monorepo/.claude/agents/frontend-developer.agent.md +11 -0
  66. package/src/monorepo/.claude/agents/green.agent.md +12 -0
  67. package/src/monorepo/.claude/agents/implementer.agent.md +12 -0
  68. package/src/monorepo/.claude/agents/planner.agent.md +12 -0
  69. package/src/monorepo/.claude/agents/red.agent.md +12 -0
  70. package/src/monorepo/.claude/agents/refactor.agent.md +12 -0
  71. package/src/monorepo/.claude/agents/researcher.agent.md +12 -0
  72. package/src/monorepo/.claude/agents/reviewer.agent.md +11 -0
  73. package/src/monorepo/.claude/agents/tdd.agent.md +12 -0
  74. package/src/monorepo/.claude/agents-snippets/admin-portal.md +90 -0
  75. package/src/monorepo/.claude/agents-snippets/api-specialist.md +57 -0
  76. package/src/monorepo/.claude/agents-snippets/backend-architect.md +49 -0
  77. package/src/monorepo/.claude/agents-snippets/documenter.md +58 -0
  78. package/src/monorepo/.claude/agents-snippets/feature-builder.md +49 -0
  79. package/src/monorepo/.claude/agents-snippets/frontend-developer.md +49 -0
  80. package/src/monorepo/.claude/agents-snippets/green.md +18 -0
  81. package/src/monorepo/.claude/agents-snippets/implementer.md +31 -0
  82. package/src/monorepo/.claude/agents-snippets/planner.md +40 -0
  83. package/src/monorepo/.claude/agents-snippets/red.md +14 -0
  84. package/src/monorepo/.claude/agents-snippets/refactor.md +22 -0
  85. package/src/monorepo/.claude/agents-snippets/researcher.md +43 -0
  86. package/src/monorepo/.claude/agents-snippets/reviewer.md +83 -0
  87. package/src/monorepo/.claude/agents-snippets/tdd.md +18 -0
  88. package/src/monorepo/.claude/commands/assign-tasks.md +13 -0
  89. package/src/monorepo/.claude/commands/bootstrap-patch.md +15 -0
  90. package/src/monorepo/.claude/commands/bootstrap-upgrade.md +15 -0
  91. package/src/monorepo/.claude/commands/bootstrap.md +15 -0
  92. package/src/monorepo/.claude/commands/commit-push.md +13 -0
  93. package/src/monorepo/.claude/commands/constitution.md +15 -0
  94. package/src/monorepo/.claude/commands/create-skill.md +15 -0
  95. package/src/monorepo/.claude/commands/implement-feature.md +15 -0
  96. package/src/monorepo/.claude/commands/implement-fixes.md +15 -0
  97. package/src/monorepo/.claude/commands/implement.md +15 -0
  98. package/src/monorepo/.claude/commands/plan.md +15 -0
  99. package/src/monorepo/.claude/commands/playwright-test.md +13 -0
  100. package/src/monorepo/.claude/commands/ponytail-audit.md +15 -0
  101. package/src/monorepo/.claude/commands/ponytail-debt.md +15 -0
  102. package/src/monorepo/.claude/commands/ponytail-gain.md +15 -0
  103. package/src/monorepo/.claude/commands/ponytail-help.md +15 -0
  104. package/src/monorepo/.claude/commands/ponytail-review.md +15 -0
  105. package/src/monorepo/.claude/commands/ponytail.md +15 -0
  106. package/src/monorepo/.claude/commands/release-notes.md +13 -0
  107. package/src/monorepo/.claude/commands/review-pr.md +15 -0
  108. package/src/monorepo/.claude/commands/review-staged.md +15 -0
  109. package/src/monorepo/.claude/commands/review.md +15 -0
  110. package/src/monorepo/.claude/commands/specify.md +15 -0
  111. package/src/monorepo/.claude/commands/tasks.md +13 -0
  112. package/src/monorepo/.claude/prompt-snippets/assign-tasks.md +169 -0
  113. package/src/monorepo/.claude/prompt-snippets/bootstrap-patch.md +199 -0
  114. package/src/monorepo/.claude/prompt-snippets/bootstrap-upgrade.md +452 -0
  115. package/src/monorepo/.claude/prompt-snippets/bootstrap.md +764 -0
  116. package/src/monorepo/.claude/prompt-snippets/commit-push.md +69 -0
  117. package/src/monorepo/.claude/prompt-snippets/constitution.md +57 -0
  118. package/src/monorepo/.claude/prompt-snippets/create-skill.md +490 -0
  119. package/src/monorepo/.claude/prompt-snippets/implement-feature.md +119 -0
  120. package/src/monorepo/.claude/prompt-snippets/implement-fixes.md +122 -0
  121. package/src/monorepo/.claude/prompt-snippets/implement.md +56 -0
  122. package/src/monorepo/.claude/prompt-snippets/plan.md +67 -0
  123. package/src/monorepo/.claude/prompt-snippets/playwright-test.md +55 -0
  124. package/src/monorepo/.claude/prompt-snippets/ponytail-audit.md +5 -0
  125. package/src/monorepo/.claude/prompt-snippets/ponytail-debt.md +5 -0
  126. package/src/monorepo/.claude/prompt-snippets/ponytail-gain.md +5 -0
  127. package/src/monorepo/.claude/prompt-snippets/ponytail-help.md +5 -0
  128. package/src/monorepo/.claude/prompt-snippets/ponytail-review.md +5 -0
  129. package/src/monorepo/.claude/prompt-snippets/ponytail.md +5 -0
  130. package/src/monorepo/.claude/prompt-snippets/release-notes.md +134 -0
  131. package/src/monorepo/.claude/prompt-snippets/review-pr.md +156 -0
  132. package/src/monorepo/.claude/prompt-snippets/review-staged.md +35 -0
  133. package/src/monorepo/.claude/prompt-snippets/review.md +139 -0
  134. package/src/monorepo/.claude/prompt-snippets/specify.md +51 -0
  135. package/src/monorepo/.claude/prompt-snippets/tasks.md +108 -0
  136. package/src/monorepo/.claude/rules/agent-conduct.md +14 -0
  137. package/src/monorepo/.claude/rules/api-server.md +19 -0
  138. package/src/monorepo/.claude/rules/coding-standards.md +13 -0
  139. package/src/monorepo/.claude/rules/component-structure.md +18 -0
  140. package/src/monorepo/.claude/rules/core-libraries.md +16 -0
  141. package/src/monorepo/.claude/rules/environment-tooling.md +12 -0
  142. package/src/monorepo/.claude/rules/logging-comments.md +17 -0
  143. package/src/monorepo/.claude/rules/logging.md +17 -0
  144. package/src/monorepo/.claude/rules/orient-to-recent-work.md +13 -0
  145. package/src/monorepo/.claude/rules/prisma-migrations.md +16 -0
  146. package/src/monorepo/.claude/rules/project-context.md +14 -0
  147. package/src/monorepo/.claude/rules/server-client-separation.md +17 -0
  148. package/src/monorepo/.claude/rules/subagent-workflow.md +14 -0
  149. package/src/monorepo/.claude/rules/testing-quality.md +19 -0
  150. package/src/monorepo/.claude/rules/testing.md +16 -0
  151. package/src/monorepo/.claude/rules/ui-accessibility.md +18 -0
  152. package/src/monorepo/.claude/rules/version-control.md +14 -0
  153. package/src/monorepo/.claude/rules/what-to-avoid.md +14 -0
  154. package/src/monorepo/.claude/rules-snippets/agent-conduct.md +51 -0
  155. package/src/monorepo/.claude/rules-snippets/api-server.md +5 -0
  156. package/src/monorepo/.claude/rules-snippets/coding-standards.md +45 -0
  157. package/src/monorepo/.claude/rules-snippets/component-structure.md +6 -0
  158. package/src/monorepo/.claude/rules-snippets/core-libraries.md +6 -0
  159. package/src/monorepo/.claude/rules-snippets/deployment.md +41 -0
  160. package/src/monorepo/.claude/rules-snippets/documentation.md +210 -0
  161. package/src/monorepo/.claude/rules-snippets/environment-tooling.md +4 -0
  162. package/src/monorepo/.claude/rules-snippets/logging-comments.md +4 -0
  163. package/src/monorepo/.claude/rules-snippets/logging.md +107 -0
  164. package/src/monorepo/.claude/rules-snippets/patterns.md +134 -0
  165. package/src/monorepo/.claude/rules-snippets/ponytail.md +24 -0
  166. package/src/monorepo/.claude/rules-snippets/prisma-migrations.md +6 -0
  167. package/src/monorepo/.claude/rules-snippets/project-context.md +8 -0
  168. package/src/monorepo/.claude/rules-snippets/server-client-separation.md +5 -0
  169. package/src/monorepo/.claude/rules-snippets/subagent-workflow.md +134 -0
  170. package/src/monorepo/.claude/rules-snippets/testing-quality.md +5 -0
  171. package/src/monorepo/.claude/rules-snippets/testing.md +42 -0
  172. package/src/monorepo/.claude/rules-snippets/ui-accessibility.md +5 -0
  173. package/src/monorepo/.claude/rules-snippets/version-control.md +4 -0
  174. package/src/monorepo/.claude/rules-snippets/what-to-avoid.md +6 -0
  175. package/src/monorepo/.claude/rules-snippets/workflows.md +81 -0
  176. package/src/monorepo/.claude/settings.json +7 -0
  177. package/src/monorepo/.claude/skills/README.md +50 -0
  178. package/src/monorepo/.cursor/agents/admin-portal.agent.md +11 -0
  179. package/src/monorepo/.cursor/agents/api-specialist.agent.md +11 -0
  180. package/src/monorepo/.cursor/agents/backend-architect.agent.md +11 -0
  181. package/src/monorepo/.cursor/agents/documenter.agent.md +11 -0
  182. package/src/monorepo/.cursor/agents/feature-builder.agent.md +11 -0
  183. package/src/monorepo/.cursor/agents/frontend-developer.agent.md +11 -0
  184. package/src/monorepo/.cursor/agents/green.agent.md +11 -0
  185. package/src/monorepo/.cursor/agents/implementer.agent.md +11 -0
  186. package/src/monorepo/.cursor/agents/planner.agent.md +11 -0
  187. package/src/monorepo/.cursor/agents/red.agent.md +11 -0
  188. package/src/monorepo/.cursor/agents/refactor.agent.md +11 -0
  189. package/src/monorepo/.cursor/agents/researcher.agent.md +11 -0
  190. package/src/monorepo/.cursor/agents/reviewer.agent.md +11 -0
  191. package/src/monorepo/.cursor/agents/tdd.agent.md +11 -0
  192. package/src/monorepo/.cursor/commands/assign-tasks.md +13 -0
  193. package/src/monorepo/.cursor/commands/bootstrap-patch.md +17 -0
  194. package/src/monorepo/.cursor/commands/bootstrap-upgrade.md +15 -0
  195. package/src/monorepo/.cursor/commands/bootstrap.md +17 -0
  196. package/src/monorepo/.cursor/commands/commit-push.md +15 -0
  197. package/src/monorepo/.cursor/commands/constitution.md +17 -0
  198. package/src/monorepo/.cursor/commands/create-skill.md +17 -0
  199. package/src/monorepo/.cursor/commands/implement-feature.md +17 -0
  200. package/src/monorepo/.cursor/commands/implement-fixes.md +17 -0
  201. package/src/monorepo/.cursor/commands/implement.md +17 -0
  202. package/src/monorepo/.cursor/commands/plan.md +17 -0
  203. package/src/monorepo/.cursor/commands/playwright-test.md +15 -0
  204. package/src/monorepo/.cursor/commands/ponytail-audit.md +13 -0
  205. package/src/monorepo/.cursor/commands/ponytail-debt.md +13 -0
  206. package/src/monorepo/.cursor/commands/ponytail-gain.md +13 -0
  207. package/src/monorepo/.cursor/commands/ponytail-help.md +13 -0
  208. package/src/monorepo/.cursor/commands/ponytail-review.md +13 -0
  209. package/src/monorepo/.cursor/commands/ponytail.md +13 -0
  210. package/src/monorepo/.cursor/commands/release-notes.md +15 -0
  211. package/src/monorepo/.cursor/commands/review-pr.md +17 -0
  212. package/src/monorepo/.cursor/commands/review-staged.md +10 -0
  213. package/src/monorepo/.cursor/commands/review.md +17 -0
  214. package/src/monorepo/.cursor/commands/specify.md +17 -0
  215. package/src/monorepo/.cursor/commands/tasks.md +15 -0
  216. package/src/monorepo/.cursor/mcp.json +13 -0
  217. package/src/monorepo/.cursor/rules/agent-conduct.mdc +11 -0
  218. package/src/monorepo/.cursor/rules/api-server.mdc +11 -0
  219. package/src/monorepo/.cursor/rules/coding-standards.mdc +11 -0
  220. package/src/monorepo/.cursor/rules/component-structure.mdc +11 -0
  221. package/src/monorepo/.cursor/rules/core-libraries.mdc +11 -0
  222. package/src/monorepo/.cursor/rules/environment-tooling.mdc +11 -0
  223. package/src/monorepo/.cursor/rules/logging-comments.mdc +11 -0
  224. package/src/monorepo/.cursor/rules/logging.mdc +10 -0
  225. package/src/monorepo/.cursor/rules/orient-to-recent-work.mdc +9 -0
  226. package/src/monorepo/.cursor/rules/ponytail.mdc +9 -0
  227. package/src/monorepo/.cursor/rules/prisma-migrations.mdc +11 -0
  228. package/src/monorepo/.cursor/rules/project-context.mdc +11 -0
  229. package/src/monorepo/.cursor/rules/server-client-separation.mdc +11 -0
  230. package/src/monorepo/.cursor/rules/subagent-workflow.mdc +11 -0
  231. package/src/monorepo/.cursor/rules/testing-quality.mdc +11 -0
  232. package/src/monorepo/.cursor/rules/ui-accessibility.mdc +11 -0
  233. package/src/monorepo/.cursor/rules/version-control.mdc +11 -0
  234. package/src/monorepo/.cursor/rules/what-to-avoid.mdc +11 -0
  235. package/src/monorepo/.cursor/skills/README.md +50 -0
  236. package/src/monorepo/.github/agents/admin-portal.agent.md +11 -0
  237. package/src/monorepo/.github/agents/api-specialist.agent.md +11 -0
  238. package/src/monorepo/.github/agents/backend-architect.agent.md +11 -0
  239. package/src/monorepo/.github/agents/documenter.agent.md +11 -0
  240. package/src/monorepo/.github/agents/feature-builder.agent.md +24 -0
  241. package/src/monorepo/.github/agents/frontend-developer.agent.md +11 -0
  242. package/src/monorepo/.github/agents/green.agent.md +12 -0
  243. package/src/monorepo/.github/agents/implementer.agent.md +12 -0
  244. package/src/monorepo/.github/agents/planner.agent.md +12 -0
  245. package/src/monorepo/.github/agents/red.agent.md +12 -0
  246. package/src/monorepo/.github/agents/refactor.agent.md +12 -0
  247. package/src/monorepo/.github/agents/researcher.agent.md +12 -0
  248. package/src/monorepo/.github/agents/reviewer.agent.md +11 -0
  249. package/src/monorepo/.github/agents/tdd.agent.md +13 -0
  250. package/src/monorepo/.github/copilot-instructions.md +95 -0
  251. package/src/monorepo/.github/instructions/agent-conduct.instructions.md +14 -0
  252. package/src/monorepo/.github/instructions/api-server.instructions.md +14 -0
  253. package/src/monorepo/.github/instructions/coding-standards.instructions.md +13 -0
  254. package/src/monorepo/.github/instructions/component-structure.instructions.md +14 -0
  255. package/src/monorepo/.github/instructions/core-libraries.instructions.md +14 -0
  256. package/src/monorepo/.github/instructions/deployment.instructions.md +13 -0
  257. package/src/monorepo/.github/instructions/documentation.instructions.md +14 -0
  258. package/src/monorepo/.github/instructions/environment-tooling.instructions.md +14 -0
  259. package/src/monorepo/.github/instructions/logging-comments.instructions.md +14 -0
  260. package/src/monorepo/.github/instructions/logging.instructions.md +14 -0
  261. package/src/monorepo/.github/instructions/patterns.instructions.md +14 -0
  262. package/src/monorepo/.github/instructions/prisma-migrations.instructions.md +14 -0
  263. package/src/monorepo/.github/instructions/project-context.instructions.md +13 -0
  264. package/src/monorepo/.github/instructions/server-client-separation.instructions.md +14 -0
  265. package/src/monorepo/.github/instructions/subagent-workflow.instructions.md +14 -0
  266. package/src/monorepo/.github/instructions/testing-quality.instructions.md +15 -0
  267. package/src/monorepo/.github/instructions/testing.instructions.md +14 -0
  268. package/src/monorepo/.github/instructions/ui-accessibility.instructions.md +14 -0
  269. package/src/monorepo/.github/instructions/version-control.instructions.md +14 -0
  270. package/src/monorepo/.github/instructions/what-to-avoid.instructions.md +14 -0
  271. package/src/monorepo/.github/instructions/workflows.instructions.md +14 -0
  272. package/src/monorepo/.github/prompts/assign-tasks.prompt.md +14 -0
  273. package/src/monorepo/.github/prompts/bootstrap-patch.prompt.md +15 -0
  274. package/src/monorepo/.github/prompts/bootstrap-upgrade.prompt.md +15 -0
  275. package/src/monorepo/.github/prompts/bootstrap.prompt.md +15 -0
  276. package/src/monorepo/.github/prompts/commit-push.prompt.md +13 -0
  277. package/src/monorepo/.github/prompts/constitution.prompt.md +15 -0
  278. package/src/monorepo/.github/prompts/create-skill.prompt.md +15 -0
  279. package/src/monorepo/.github/prompts/implement-feature.prompt.md +15 -0
  280. package/src/monorepo/.github/prompts/implement-fixes.prompt.md +15 -0
  281. package/src/monorepo/.github/prompts/implement.prompt.md +15 -0
  282. package/src/monorepo/.github/prompts/plan.prompt.md +15 -0
  283. package/src/monorepo/.github/prompts/playwright-test.prompt.md +13 -0
  284. package/src/monorepo/.github/prompts/ponytail-audit.prompt.md +13 -0
  285. package/src/monorepo/.github/prompts/ponytail-debt.prompt.md +13 -0
  286. package/src/monorepo/.github/prompts/ponytail-gain.prompt.md +13 -0
  287. package/src/monorepo/.github/prompts/ponytail-help.prompt.md +13 -0
  288. package/src/monorepo/.github/prompts/ponytail-review.prompt.md +13 -0
  289. package/src/monorepo/.github/prompts/ponytail.prompt.md +13 -0
  290. package/src/monorepo/.github/prompts/release-notes.prompt.md +13 -0
  291. package/src/monorepo/.github/prompts/review-pr.prompt.md +15 -0
  292. package/src/monorepo/.github/prompts/review-staged.prompt.md +16 -0
  293. package/src/monorepo/.github/prompts/review.prompt.md +15 -0
  294. package/src/monorepo/.github/prompts/specify.prompt.md +15 -0
  295. package/src/monorepo/.github/prompts/tasks.prompt.md +13 -0
  296. package/src/monorepo/.github/skills/README.md +36 -0
  297. package/src/monorepo/.mcp.json +13 -0
  298. package/src/monorepo/.opencode/agents/admin-portal.md +14 -0
  299. package/src/monorepo/.opencode/agents/api-specialist.md +14 -0
  300. package/src/monorepo/.opencode/agents/backend-architect.md +14 -0
  301. package/src/monorepo/.opencode/agents/documenter.md +14 -0
  302. package/src/monorepo/.opencode/agents/feature-builder.md +15 -0
  303. package/src/monorepo/.opencode/agents/frontend-developer.md +14 -0
  304. package/src/monorepo/.opencode/agents/green.md +14 -0
  305. package/src/monorepo/.opencode/agents/implementer.md +14 -0
  306. package/src/monorepo/.opencode/agents/planner.md +14 -0
  307. package/src/monorepo/.opencode/agents/red.md +14 -0
  308. package/src/monorepo/.opencode/agents/refactor.md +14 -0
  309. package/src/monorepo/.opencode/agents/researcher.md +14 -0
  310. package/src/monorepo/.opencode/agents/reviewer.md +14 -0
  311. package/src/monorepo/.opencode/agents/tdd.md +15 -0
  312. package/src/monorepo/.opencode/commands/assign-tasks.md +16 -0
  313. package/src/monorepo/.opencode/commands/bootstrap-patch.md +18 -0
  314. package/src/monorepo/.opencode/commands/bootstrap-upgrade.md +18 -0
  315. package/src/monorepo/.opencode/commands/bootstrap.md +18 -0
  316. package/src/monorepo/.opencode/commands/commit-push.md +16 -0
  317. package/src/monorepo/.opencode/commands/constitution.md +18 -0
  318. package/src/monorepo/.opencode/commands/create-skill.md +16 -0
  319. package/src/monorepo/.opencode/commands/implement-feature.md +18 -0
  320. package/src/monorepo/.opencode/commands/implement-fixes.md +20 -0
  321. package/src/monorepo/.opencode/commands/implement.md +18 -0
  322. package/src/monorepo/.opencode/commands/plan.md +18 -0
  323. package/src/monorepo/.opencode/commands/playwright-test.md +16 -0
  324. package/src/monorepo/.opencode/commands/ponytail-audit.md +10 -0
  325. package/src/monorepo/.opencode/commands/ponytail-debt.md +10 -0
  326. package/src/monorepo/.opencode/commands/ponytail-gain.md +10 -0
  327. package/src/monorepo/.opencode/commands/ponytail-help.md +10 -0
  328. package/src/monorepo/.opencode/commands/ponytail-review.md +10 -0
  329. package/src/monorepo/.opencode/commands/ponytail.md +10 -0
  330. package/src/monorepo/.opencode/commands/release-notes.md +16 -0
  331. package/src/monorepo/.opencode/commands/review-pr.md +18 -0
  332. package/src/monorepo/.opencode/commands/review-staged.md +11 -0
  333. package/src/monorepo/.opencode/commands/review.md +18 -0
  334. package/src/monorepo/.opencode/commands/specify.md +18 -0
  335. package/src/monorepo/.opencode/commands/tasks.md +16 -0
  336. package/src/monorepo/.opencode/opencode.json +9 -0
  337. package/src/monorepo/.opencode/plugins/ponytail.mjs +79 -0
  338. package/src/monorepo/.opencode/rules/agent-conduct.md +12 -0
  339. package/src/monorepo/.opencode/rules/api-server.md +11 -0
  340. package/src/monorepo/.opencode/rules/coding-standards.md +11 -0
  341. package/src/monorepo/.opencode/rules/component-structure.md +11 -0
  342. package/src/monorepo/.opencode/rules/core-libraries.md +11 -0
  343. package/src/monorepo/.opencode/rules/environment-tooling.md +11 -0
  344. package/src/monorepo/.opencode/rules/logging-comments.md +11 -0
  345. package/src/monorepo/.opencode/rules/logging.md +11 -0
  346. package/src/monorepo/.opencode/rules/ponytail.md +3 -0
  347. package/src/monorepo/.opencode/rules/prisma-migrations.md +11 -0
  348. package/src/monorepo/.opencode/rules/project-context.md +11 -0
  349. package/src/monorepo/.opencode/rules/server-client-separation.md +11 -0
  350. package/src/monorepo/.opencode/rules/subagent-workflow.md +11 -0
  351. package/src/monorepo/.opencode/rules/testing-quality.md +11 -0
  352. package/src/monorepo/.opencode/rules/ui-accessibility.md +11 -0
  353. package/src/monorepo/.opencode/rules/version-control.md +11 -0
  354. package/src/monorepo/.opencode/rules/what-to-avoid.md +11 -0
  355. package/src/monorepo/.vscode/mcp.json +13 -0
  356. package/src/monorepo/AGENTS.md +367 -0
  357. package/src/monorepo/CLAUDE.md +63 -0
  358. package/src/monorepo/README.md +182 -0
  359. package/src/monorepo/apps/app-template/AGENTS.md +169 -0
  360. package/src/monorepo/apps/app-template/README.md +77 -0
  361. package/src/monorepo/docs/api/README.md +82 -0
  362. package/src/monorepo/docs/architecture/README.md +56 -0
  363. package/src/monorepo/docs/features/README.md +82 -0
  364. package/src/monorepo/docs/fixes/README.md +117 -0
  365. package/src/monorepo/hooks/claude-codex-hooks.json +31 -0
  366. package/src/monorepo/hooks/copilot-hooks.json +21 -0
  367. package/src/monorepo/hooks/ponytail-activate.js +91 -0
  368. package/src/monorepo/hooks/ponytail-config.js +122 -0
  369. package/src/monorepo/hooks/ponytail-instructions.js +92 -0
  370. package/src/monorepo/hooks/ponytail-mode-tracker.js +55 -0
  371. package/src/monorepo/hooks/ponytail-runtime.js +51 -0
  372. package/src/monorepo/hooks/ponytail-statusline.ps1 +21 -0
  373. package/src/monorepo/hooks/ponytail-statusline.sh +12 -0
  374. package/src/monorepo/packages/package-template/README.md +63 -0
  375. package/src/monorepo/templates/README.md +106 -0
  376. package/src/monorepo/templates/adr.template.md +156 -0
  377. package/src/monorepo/templates/complex-fix-plan.template.md +154 -0
  378. package/src/monorepo/templates/complex-fix-spec.template.md +160 -0
  379. package/src/monorepo/templates/feature-plan.template.md +192 -0
  380. package/src/monorepo/templates/feature-spec.template.md +148 -0
  381. package/src/monorepo/templates/monthly-fix-log.template.md +92 -0
  382. package/src/repo/.agents/rules/ponytail.md +3 -0
  383. package/src/repo/.agents/skills/acli/SKILL.md +424 -0
  384. package/src/repo/.agents/skills/bkt-cli/SKILL.md +374 -0
  385. package/src/repo/.agents/skills/brainstorming/SKILL.md +54 -0
  386. package/src/repo/.agents/skills/code-simplifier/SKILL.md +109 -0
  387. package/src/repo/.agents/skills/debugger/SKILL.md +123 -0
  388. package/src/repo/.agents/skills/dispatching-parallel-agents/SKILL.md +206 -0
  389. package/src/repo/.agents/skills/executing-plans/SKILL.md +76 -0
  390. package/src/repo/.agents/skills/finishing-a-development-branch/SKILL.md +200 -0
  391. package/src/repo/.agents/skills/gh-cli/SKILL.md +461 -0
  392. package/src/repo/.agents/skills/glab-cli/SKILL.md +468 -0
  393. package/src/repo/.agents/skills/issue-tracker/SKILL.md +119 -0
  394. package/src/repo/.agents/skills/linear-cli/SKILL.md +276 -0
  395. package/src/repo/.agents/skills/logging/SKILL.md +559 -0
  396. package/src/repo/.agents/skills/orient-to-recent-work/SKILL.md +43 -0
  397. package/src/repo/.agents/skills/ponytail/SKILL.md +101 -0
  398. package/src/repo/.agents/skills/ponytail-audit/SKILL.md +41 -0
  399. package/src/repo/.agents/skills/ponytail-debt/SKILL.md +44 -0
  400. package/src/repo/.agents/skills/ponytail-gain/SKILL.md +51 -0
  401. package/src/repo/.agents/skills/ponytail-help/SKILL.md +74 -0
  402. package/src/repo/.agents/skills/ponytail-review/SKILL.md +57 -0
  403. package/src/repo/.agents/skills/project-documentation/SKILL.md +367 -0
  404. package/src/repo/.agents/skills/receiving-code-review/SKILL.md +213 -0
  405. package/src/repo/.agents/skills/requesting-code-review/SKILL.md +105 -0
  406. package/src/repo/.agents/skills/requesting-code-review/code-reviewer.md +146 -0
  407. package/src/repo/.agents/skills/security-reviewer/SKILL.md +144 -0
  408. package/src/repo/.agents/skills/subagent-driven-development/SKILL.md +279 -0
  409. package/src/repo/.agents/skills/subagent-driven-development/code-quality-reviewer-prompt.md +20 -0
  410. package/src/repo/.agents/skills/subagent-driven-development/implementer-prompt.md +78 -0
  411. package/src/repo/.agents/skills/subagent-driven-development/spec-reviewer-prompt.md +61 -0
  412. package/src/repo/.agents/skills/systematic-debugging/CREATION-LOG.md +119 -0
  413. package/src/repo/.agents/skills/systematic-debugging/SKILL.md +296 -0
  414. package/src/repo/.agents/skills/systematic-debugging/condition-based-waiting-example.ts +158 -0
  415. package/src/repo/.agents/skills/systematic-debugging/condition-based-waiting.md +115 -0
  416. package/src/repo/.agents/skills/systematic-debugging/defense-in-depth.md +122 -0
  417. package/src/repo/.agents/skills/systematic-debugging/find-polluter.sh +63 -0
  418. package/src/repo/.agents/skills/systematic-debugging/root-cause-tracing.md +169 -0
  419. package/src/repo/.agents/skills/systematic-debugging/test-academic.md +14 -0
  420. package/src/repo/.agents/skills/systematic-debugging/test-pressure-1.md +58 -0
  421. package/src/repo/.agents/skills/systematic-debugging/test-pressure-2.md +68 -0
  422. package/src/repo/.agents/skills/systematic-debugging/test-pressure-3.md +69 -0
  423. package/src/repo/.agents/skills/test-driven-development/SKILL.md +371 -0
  424. package/src/repo/.agents/skills/test-driven-development/testing-anti-patterns.md +299 -0
  425. package/src/repo/.agents/skills/using-git-worktrees/SKILL.md +291 -0
  426. package/src/repo/.agents/skills/using-superpowers/SKILL.md +87 -0
  427. package/src/repo/.agents/skills/verification-before-completion/SKILL.md +148 -0
  428. package/src/repo/.agents/skills/writing-plans/SKILL.md +116 -0
  429. package/src/repo/.agents/skills/writing-skills/SKILL.md +655 -0
  430. package/src/repo/.agents/skills/writing-skills/anthropic-best-practices.md +1150 -0
  431. package/src/repo/.agents/skills/writing-skills/examples/CLAUDE_MD_TESTING.md +189 -0
  432. package/src/repo/.agents/skills/writing-skills/graphviz-conventions.dot +172 -0
  433. package/src/repo/.agents/skills/writing-skills/persuasion-principles.md +187 -0
  434. package/src/repo/.agents/skills/writing-skills/render-graphs.js +168 -0
  435. package/src/repo/.agents/skills/writing-skills/testing-skills-with-subagents.md +384 -0
  436. package/src/repo/.claude/agents/admin-portal.agent.md +12 -0
  437. package/src/repo/.claude/agents/api-specialist.agent.md +12 -0
  438. package/src/repo/.claude/agents/backend-architect.agent.md +12 -0
  439. package/src/repo/.claude/agents/documenter.agent.md +12 -0
  440. package/src/repo/.claude/agents/feature-builder.agent.md +12 -0
  441. package/src/repo/.claude/agents/frontend-developer.agent.md +12 -0
  442. package/src/repo/.claude/agents/green.agent.md +12 -0
  443. package/src/repo/.claude/agents/implementer.agent.md +12 -0
  444. package/src/repo/.claude/agents/planner.agent.md +12 -0
  445. package/src/repo/.claude/agents/red.agent.md +12 -0
  446. package/src/repo/.claude/agents/refactor.agent.md +12 -0
  447. package/src/repo/.claude/agents/researcher.agent.md +12 -0
  448. package/src/repo/.claude/agents/reviewer.agent.md +12 -0
  449. package/src/repo/.claude/agents/tdd.agent.md +12 -0
  450. package/src/repo/.claude/agents-snippets/admin-portal.md +90 -0
  451. package/src/repo/.claude/agents-snippets/api-specialist.md +57 -0
  452. package/src/repo/.claude/agents-snippets/backend-architect.md +49 -0
  453. package/src/repo/.claude/agents-snippets/documenter.md +58 -0
  454. package/src/repo/.claude/agents-snippets/feature-builder.md +49 -0
  455. package/src/repo/.claude/agents-snippets/frontend-developer.md +49 -0
  456. package/src/repo/.claude/agents-snippets/green.md +18 -0
  457. package/src/repo/.claude/agents-snippets/implementer.md +31 -0
  458. package/src/repo/.claude/agents-snippets/planner.md +40 -0
  459. package/src/repo/.claude/agents-snippets/red.md +14 -0
  460. package/src/repo/.claude/agents-snippets/refactor.md +22 -0
  461. package/src/repo/.claude/agents-snippets/researcher.md +43 -0
  462. package/src/repo/.claude/agents-snippets/reviewer.md +83 -0
  463. package/src/repo/.claude/agents-snippets/tdd.md +18 -0
  464. package/src/repo/.claude/commands/assign-tasks.md +13 -0
  465. package/src/repo/.claude/commands/bootstrap-patch.md +15 -0
  466. package/src/repo/.claude/commands/bootstrap-upgrade.md +15 -0
  467. package/src/repo/.claude/commands/bootstrap.md +15 -0
  468. package/src/repo/.claude/commands/commit-push.md +13 -0
  469. package/src/repo/.claude/commands/constitution.md +15 -0
  470. package/src/repo/.claude/commands/create-skill.md +13 -0
  471. package/src/repo/.claude/commands/implement-feature.md +15 -0
  472. package/src/repo/.claude/commands/implement-fixes.md +15 -0
  473. package/src/repo/.claude/commands/implement.md +15 -0
  474. package/src/repo/.claude/commands/plan.md +15 -0
  475. package/src/repo/.claude/commands/playwright-test.md +13 -0
  476. package/src/repo/.claude/commands/ponytail-audit.md +15 -0
  477. package/src/repo/.claude/commands/ponytail-debt.md +15 -0
  478. package/src/repo/.claude/commands/ponytail-gain.md +15 -0
  479. package/src/repo/.claude/commands/ponytail-help.md +15 -0
  480. package/src/repo/.claude/commands/ponytail-review.md +15 -0
  481. package/src/repo/.claude/commands/ponytail.md +15 -0
  482. package/src/repo/.claude/commands/release-notes.md +13 -0
  483. package/src/repo/.claude/commands/review-pr.md +15 -0
  484. package/src/repo/.claude/commands/review-staged.md +15 -0
  485. package/src/repo/.claude/commands/review.md +15 -0
  486. package/src/repo/.claude/commands/specify.md +15 -0
  487. package/src/repo/.claude/commands/tasks.md +13 -0
  488. package/src/repo/.claude/prompt-snippets/assign-tasks.md +170 -0
  489. package/src/repo/.claude/prompt-snippets/bootstrap-patch.md +200 -0
  490. package/src/repo/.claude/prompt-snippets/bootstrap-upgrade.md +357 -0
  491. package/src/repo/.claude/prompt-snippets/bootstrap.md +1026 -0
  492. package/src/repo/.claude/prompt-snippets/commit-push.md +70 -0
  493. package/src/repo/.claude/prompt-snippets/constitution.md +57 -0
  494. package/src/repo/.claude/prompt-snippets/create-skill.md +490 -0
  495. package/src/repo/.claude/prompt-snippets/implement-feature.md +124 -0
  496. package/src/repo/.claude/prompt-snippets/implement-fixes.md +116 -0
  497. package/src/repo/.claude/prompt-snippets/implement.md +56 -0
  498. package/src/repo/.claude/prompt-snippets/plan.md +94 -0
  499. package/src/repo/.claude/prompt-snippets/playwright-test.md +58 -0
  500. package/src/repo/.claude/prompt-snippets/ponytail-audit.md +5 -0
  501. package/src/repo/.claude/prompt-snippets/ponytail-debt.md +5 -0
  502. package/src/repo/.claude/prompt-snippets/ponytail-gain.md +5 -0
  503. package/src/repo/.claude/prompt-snippets/ponytail-help.md +5 -0
  504. package/src/repo/.claude/prompt-snippets/ponytail-review.md +5 -0
  505. package/src/repo/.claude/prompt-snippets/ponytail.md +5 -0
  506. package/src/repo/.claude/prompt-snippets/release-notes.md +204 -0
  507. package/src/repo/.claude/prompt-snippets/review-pr.md +156 -0
  508. package/src/repo/.claude/prompt-snippets/review-staged.md +35 -0
  509. package/src/repo/.claude/prompt-snippets/review.md +139 -0
  510. package/src/repo/.claude/prompt-snippets/specify.md +84 -0
  511. package/src/repo/.claude/prompt-snippets/tasks.md +146 -0
  512. package/src/repo/.claude/rules/agent-conduct.md +13 -0
  513. package/src/repo/.claude/rules/api-server.md +16 -0
  514. package/src/repo/.claude/rules/coding-standards.md +13 -0
  515. package/src/repo/.claude/rules/component-structure.md +15 -0
  516. package/src/repo/.claude/rules/core-libraries.md +13 -0
  517. package/src/repo/.claude/rules/environment-tooling.md +13 -0
  518. package/src/repo/.claude/rules/logging-comments.md +13 -0
  519. package/src/repo/.claude/rules/logging.md +13 -0
  520. package/src/repo/.claude/rules/orient-to-recent-work.md +13 -0
  521. package/src/repo/.claude/rules/prisma-migrations.md +16 -0
  522. package/src/repo/.claude/rules/project-context.md +13 -0
  523. package/src/repo/.claude/rules/server-client-separation.md +13 -0
  524. package/src/repo/.claude/rules/subagent-workflow.md +13 -0
  525. package/src/repo/.claude/rules/testing-quality.md +16 -0
  526. package/src/repo/.claude/rules/testing.md +16 -0
  527. package/src/repo/.claude/rules/ui-accessibility.md +15 -0
  528. package/src/repo/.claude/rules/version-control.md +13 -0
  529. package/src/repo/.claude/rules/what-to-avoid.md +13 -0
  530. package/src/repo/.claude/rules-snippets/agent-conduct.md +51 -0
  531. package/src/repo/.claude/rules-snippets/api-server.md +7 -0
  532. package/src/repo/.claude/rules-snippets/coding-standards.md +45 -0
  533. package/src/repo/.claude/rules-snippets/component-structure.md +8 -0
  534. package/src/repo/.claude/rules-snippets/core-libraries.md +6 -0
  535. package/src/repo/.claude/rules-snippets/deployment.md +38 -0
  536. package/src/repo/.claude/rules-snippets/documentation.md +621 -0
  537. package/src/repo/.claude/rules-snippets/environment-tooling.md +6 -0
  538. package/src/repo/.claude/rules-snippets/logging-comments.md +4 -0
  539. package/src/repo/.claude/rules-snippets/logging.md +352 -0
  540. package/src/repo/.claude/rules-snippets/patterns.md +29 -0
  541. package/src/repo/.claude/rules-snippets/ponytail.md +24 -0
  542. package/src/repo/.claude/rules-snippets/prisma-migrations.md +8 -0
  543. package/src/repo/.claude/rules-snippets/project-context.md +25 -0
  544. package/src/repo/.claude/rules-snippets/server-client-separation.md +7 -0
  545. package/src/repo/.claude/rules-snippets/subagent-workflow.md +134 -0
  546. package/src/repo/.claude/rules-snippets/testing-quality.md +5 -0
  547. package/src/repo/.claude/rules-snippets/testing.md +38 -0
  548. package/src/repo/.claude/rules-snippets/ui-accessibility.md +7 -0
  549. package/src/repo/.claude/rules-snippets/version-control.md +6 -0
  550. package/src/repo/.claude/rules-snippets/what-to-avoid.md +8 -0
  551. package/src/repo/.claude/rules-snippets/workflows.md +25 -0
  552. package/src/repo/.claude/settings.json +7 -0
  553. package/src/repo/.claude/skills/README.md +50 -0
  554. package/src/repo/.cursor/agents/admin-portal.agent.md +11 -0
  555. package/src/repo/.cursor/agents/api-specialist.agent.md +11 -0
  556. package/src/repo/.cursor/agents/backend-architect.agent.md +11 -0
  557. package/src/repo/.cursor/agents/documenter.agent.md +11 -0
  558. package/src/repo/.cursor/agents/feature-builder.agent.md +11 -0
  559. package/src/repo/.cursor/agents/frontend-developer.agent.md +11 -0
  560. package/src/repo/.cursor/agents/green.agent.md +11 -0
  561. package/src/repo/.cursor/agents/implementer.agent.md +11 -0
  562. package/src/repo/.cursor/agents/planner.agent.md +11 -0
  563. package/src/repo/.cursor/agents/red.agent.md +11 -0
  564. package/src/repo/.cursor/agents/refactor.agent.md +11 -0
  565. package/src/repo/.cursor/agents/researcher.agent.md +11 -0
  566. package/src/repo/.cursor/agents/reviewer.agent.md +11 -0
  567. package/src/repo/.cursor/agents/tdd.agent.md +11 -0
  568. package/src/repo/.cursor/commands/assign-tasks.md +13 -0
  569. package/src/repo/.cursor/commands/bootstrap-patch.md +17 -0
  570. package/src/repo/.cursor/commands/bootstrap-upgrade.md +15 -0
  571. package/src/repo/.cursor/commands/bootstrap.md +17 -0
  572. package/src/repo/.cursor/commands/commit-push.md +15 -0
  573. package/src/repo/.cursor/commands/constitution.md +17 -0
  574. package/src/repo/.cursor/commands/create-skill.md +15 -0
  575. package/src/repo/.cursor/commands/implement-feature.md +17 -0
  576. package/src/repo/.cursor/commands/implement-fixes.md +17 -0
  577. package/src/repo/.cursor/commands/implement.md +17 -0
  578. package/src/repo/.cursor/commands/plan.md +17 -0
  579. package/src/repo/.cursor/commands/playwright-test.md +15 -0
  580. package/src/repo/.cursor/commands/ponytail-audit.md +13 -0
  581. package/src/repo/.cursor/commands/ponytail-debt.md +13 -0
  582. package/src/repo/.cursor/commands/ponytail-gain.md +13 -0
  583. package/src/repo/.cursor/commands/ponytail-help.md +13 -0
  584. package/src/repo/.cursor/commands/ponytail-review.md +13 -0
  585. package/src/repo/.cursor/commands/ponytail.md +13 -0
  586. package/src/repo/.cursor/commands/release-notes.md +15 -0
  587. package/src/repo/.cursor/commands/review-pr.md +17 -0
  588. package/src/repo/.cursor/commands/review-staged.md +10 -0
  589. package/src/repo/.cursor/commands/review.md +17 -0
  590. package/src/repo/.cursor/commands/specify.md +17 -0
  591. package/src/repo/.cursor/commands/tasks.md +15 -0
  592. package/src/repo/.cursor/mcp.json +13 -0
  593. package/src/repo/.cursor/rules/agent-conduct.mdc +11 -0
  594. package/src/repo/.cursor/rules/api-server.mdc +11 -0
  595. package/src/repo/.cursor/rules/coding-standards.mdc +11 -0
  596. package/src/repo/.cursor/rules/component-structure.mdc +11 -0
  597. package/src/repo/.cursor/rules/core-libraries.mdc +11 -0
  598. package/src/repo/.cursor/rules/environment-tooling.mdc +11 -0
  599. package/src/repo/.cursor/rules/logging-comments.mdc +11 -0
  600. package/src/repo/.cursor/rules/logging.mdc +11 -0
  601. package/src/repo/.cursor/rules/orient-to-recent-work.mdc +9 -0
  602. package/src/repo/.cursor/rules/ponytail.mdc +9 -0
  603. package/src/repo/.cursor/rules/prisma-migrations.mdc +11 -0
  604. package/src/repo/.cursor/rules/project-context.mdc +11 -0
  605. package/src/repo/.cursor/rules/server-client-separation.mdc +11 -0
  606. package/src/repo/.cursor/rules/subagent-workflow.mdc +11 -0
  607. package/src/repo/.cursor/rules/testing-quality.mdc +11 -0
  608. package/src/repo/.cursor/rules/ui-accessibility.mdc +11 -0
  609. package/src/repo/.cursor/rules/version-control.mdc +11 -0
  610. package/src/repo/.cursor/rules/what-to-avoid.mdc +11 -0
  611. package/src/repo/.cursor/skills/README.md +50 -0
  612. package/src/repo/.github/agents/admin-portal.agent.md +11 -0
  613. package/src/repo/.github/agents/api-specialist.agent.md +11 -0
  614. package/src/repo/.github/agents/backend-architect.agent.md +11 -0
  615. package/src/repo/.github/agents/documenter.agent.md +11 -0
  616. package/src/repo/.github/agents/feature-builder.agent.md +24 -0
  617. package/src/repo/.github/agents/frontend-developer.agent.md +11 -0
  618. package/src/repo/.github/agents/green.agent.md +12 -0
  619. package/src/repo/.github/agents/implementer.agent.md +12 -0
  620. package/src/repo/.github/agents/planner.agent.md +12 -0
  621. package/src/repo/.github/agents/red.agent.md +12 -0
  622. package/src/repo/.github/agents/refactor.agent.md +12 -0
  623. package/src/repo/.github/agents/researcher.agent.md +12 -0
  624. package/src/repo/.github/agents/reviewer.agent.md +11 -0
  625. package/src/repo/.github/agents/tdd.agent.md +13 -0
  626. package/src/repo/.github/copilot-instructions.md +89 -0
  627. package/src/repo/.github/instructions/agent-conduct.instructions.md +13 -0
  628. package/src/repo/.github/instructions/api-server.instructions.md +13 -0
  629. package/src/repo/.github/instructions/coding-standards.instructions.md +13 -0
  630. package/src/repo/.github/instructions/component-structure.instructions.md +13 -0
  631. package/src/repo/.github/instructions/core-libraries.instructions.md +13 -0
  632. package/src/repo/.github/instructions/deployment.instructions.md +13 -0
  633. package/src/repo/.github/instructions/documentation.instructions.md +14 -0
  634. package/src/repo/.github/instructions/environment-tooling.instructions.md +13 -0
  635. package/src/repo/.github/instructions/logging-comments.instructions.md +13 -0
  636. package/src/repo/.github/instructions/logging.instructions.md +13 -0
  637. package/src/repo/.github/instructions/patterns.instructions.md +13 -0
  638. package/src/repo/.github/instructions/prisma-migrations.instructions.md +13 -0
  639. package/src/repo/.github/instructions/project-context.instructions.md +13 -0
  640. package/src/repo/.github/instructions/server-client-separation.instructions.md +13 -0
  641. package/src/repo/.github/instructions/subagent-workflow.instructions.md +13 -0
  642. package/src/repo/.github/instructions/testing-quality.instructions.md +13 -0
  643. package/src/repo/.github/instructions/testing.instructions.md +13 -0
  644. package/src/repo/.github/instructions/ui-accessibility.instructions.md +13 -0
  645. package/src/repo/.github/instructions/version-control.instructions.md +13 -0
  646. package/src/repo/.github/instructions/what-to-avoid.instructions.md +13 -0
  647. package/src/repo/.github/instructions/workflows.instructions.md +13 -0
  648. package/src/repo/.github/prompts/assign-tasks.prompt.md +14 -0
  649. package/src/repo/.github/prompts/bootstrap-patch.prompt.md +16 -0
  650. package/src/repo/.github/prompts/bootstrap-upgrade.prompt.md +15 -0
  651. package/src/repo/.github/prompts/bootstrap.prompt.md +16 -0
  652. package/src/repo/.github/prompts/commit-push.prompt.md +14 -0
  653. package/src/repo/.github/prompts/constitution.prompt.md +16 -0
  654. package/src/repo/.github/prompts/create-skill.prompt.md +16 -0
  655. package/src/repo/.github/prompts/implement-feature.prompt.md +16 -0
  656. package/src/repo/.github/prompts/implement-fixes.prompt.md +16 -0
  657. package/src/repo/.github/prompts/implement.prompt.md +16 -0
  658. package/src/repo/.github/prompts/plan.prompt.md +16 -0
  659. package/src/repo/.github/prompts/playwright-test.prompt.md +14 -0
  660. package/src/repo/.github/prompts/ponytail-audit.prompt.md +13 -0
  661. package/src/repo/.github/prompts/ponytail-debt.prompt.md +13 -0
  662. package/src/repo/.github/prompts/ponytail-gain.prompt.md +13 -0
  663. package/src/repo/.github/prompts/ponytail-help.prompt.md +13 -0
  664. package/src/repo/.github/prompts/ponytail-review.prompt.md +13 -0
  665. package/src/repo/.github/prompts/ponytail.prompt.md +13 -0
  666. package/src/repo/.github/prompts/release-notes.prompt.md +14 -0
  667. package/src/repo/.github/prompts/review-pr.prompt.md +16 -0
  668. package/src/repo/.github/prompts/review-staged.prompt.md +16 -0
  669. package/src/repo/.github/prompts/review.prompt.md +16 -0
  670. package/src/repo/.github/prompts/specify.prompt.md +16 -0
  671. package/src/repo/.github/prompts/tasks.prompt.md +14 -0
  672. package/src/repo/.github/skills/README.md +36 -0
  673. package/src/repo/.mcp.json +13 -0
  674. package/src/repo/.opencode/agents/admin-portal.md +14 -0
  675. package/src/repo/.opencode/agents/api-specialist.md +14 -0
  676. package/src/repo/.opencode/agents/backend-architect.md +14 -0
  677. package/src/repo/.opencode/agents/documenter.md +14 -0
  678. package/src/repo/.opencode/agents/feature-builder.md +15 -0
  679. package/src/repo/.opencode/agents/frontend-developer.md +14 -0
  680. package/src/repo/.opencode/agents/green.md +14 -0
  681. package/src/repo/.opencode/agents/implementer.md +14 -0
  682. package/src/repo/.opencode/agents/planner.md +14 -0
  683. package/src/repo/.opencode/agents/red.md +14 -0
  684. package/src/repo/.opencode/agents/refactor.md +14 -0
  685. package/src/repo/.opencode/agents/researcher.md +14 -0
  686. package/src/repo/.opencode/agents/reviewer.md +14 -0
  687. package/src/repo/.opencode/agents/tdd.md +15 -0
  688. package/src/repo/.opencode/commands/assign-tasks.md +16 -0
  689. package/src/repo/.opencode/commands/bootstrap-patch.md +18 -0
  690. package/src/repo/.opencode/commands/bootstrap-upgrade.md +18 -0
  691. package/src/repo/.opencode/commands/bootstrap.md +18 -0
  692. package/src/repo/.opencode/commands/commit-push.md +16 -0
  693. package/src/repo/.opencode/commands/constitution.md +18 -0
  694. package/src/repo/.opencode/commands/create-skill.md +16 -0
  695. package/src/repo/.opencode/commands/implement-feature.md +18 -0
  696. package/src/repo/.opencode/commands/implement-fixes.md +20 -0
  697. package/src/repo/.opencode/commands/implement.md +18 -0
  698. package/src/repo/.opencode/commands/plan.md +18 -0
  699. package/src/repo/.opencode/commands/playwright-test.md +16 -0
  700. package/src/repo/.opencode/commands/ponytail-audit.md +10 -0
  701. package/src/repo/.opencode/commands/ponytail-debt.md +10 -0
  702. package/src/repo/.opencode/commands/ponytail-gain.md +10 -0
  703. package/src/repo/.opencode/commands/ponytail-help.md +10 -0
  704. package/src/repo/.opencode/commands/ponytail-review.md +10 -0
  705. package/src/repo/.opencode/commands/ponytail.md +10 -0
  706. package/src/repo/.opencode/commands/release-notes.md +16 -0
  707. package/src/repo/.opencode/commands/review-pr.md +18 -0
  708. package/src/repo/.opencode/commands/review-staged.md +11 -0
  709. package/src/repo/.opencode/commands/review.md +18 -0
  710. package/src/repo/.opencode/commands/specify.md +18 -0
  711. package/src/repo/.opencode/commands/tasks.md +16 -0
  712. package/src/repo/.opencode/opencode.json +9 -0
  713. package/src/repo/.opencode/plugins/ponytail.mjs +79 -0
  714. package/src/repo/.opencode/rules/agent-conduct.md +11 -0
  715. package/src/repo/.opencode/rules/api-server.md +11 -0
  716. package/src/repo/.opencode/rules/coding-standards.md +11 -0
  717. package/src/repo/.opencode/rules/component-structure.md +11 -0
  718. package/src/repo/.opencode/rules/core-libraries.md +11 -0
  719. package/src/repo/.opencode/rules/environment-tooling.md +11 -0
  720. package/src/repo/.opencode/rules/logging-comments.md +11 -0
  721. package/src/repo/.opencode/rules/logging.md +11 -0
  722. package/src/repo/.opencode/rules/ponytail.md +3 -0
  723. package/src/repo/.opencode/rules/prisma-migrations.md +11 -0
  724. package/src/repo/.opencode/rules/project-context.md +11 -0
  725. package/src/repo/.opencode/rules/server-client-separation.md +11 -0
  726. package/src/repo/.opencode/rules/subagent-workflow.md +11 -0
  727. package/src/repo/.opencode/rules/testing-quality.md +11 -0
  728. package/src/repo/.opencode/rules/ui-accessibility.md +11 -0
  729. package/src/repo/.opencode/rules/version-control.md +11 -0
  730. package/src/repo/.opencode/rules/what-to-avoid.md +11 -0
  731. package/src/repo/.vscode/mcp.json +13 -0
  732. package/src/repo/AGENTS.md +387 -0
  733. package/src/repo/CLAUDE.md +51 -0
  734. package/src/repo/README.md +145 -0
  735. package/src/repo/docs/api/README.md +82 -0
  736. package/src/repo/docs/architecture/README.md +56 -0
  737. package/src/repo/docs/features/README.md +82 -0
  738. package/src/repo/docs/fixes/README.md +117 -0
  739. package/src/repo/hooks/claude-codex-hooks.json +31 -0
  740. package/src/repo/hooks/copilot-hooks.json +21 -0
  741. package/src/repo/hooks/ponytail-activate.js +91 -0
  742. package/src/repo/hooks/ponytail-config.js +122 -0
  743. package/src/repo/hooks/ponytail-instructions.js +92 -0
  744. package/src/repo/hooks/ponytail-mode-tracker.js +55 -0
  745. package/src/repo/hooks/ponytail-runtime.js +51 -0
  746. package/src/repo/hooks/ponytail-statusline.ps1 +21 -0
  747. package/src/repo/hooks/ponytail-statusline.sh +12 -0
  748. package/src/repo/templates/README.md +80 -0
  749. package/src/repo/templates/adr.template.md +162 -0
  750. package/src/repo/templates/complex-fix-plan.template.md +162 -0
  751. package/src/repo/templates/complex-fix-spec.template.md +163 -0
  752. package/src/repo/templates/feature-plan.template.md +202 -0
  753. package/src/repo/templates/feature-spec.template.md +148 -0
  754. package/src/repo/templates/monthly-fix-log.template.md +91 -0
@@ -0,0 +1,56 @@
1
+ # Architecture Decision Records
2
+
3
+ This folder contains Architecture Decision Records (ADRs) documenting significant technical decisions made in this project.
4
+
5
+ ## What is an ADR?
6
+
7
+ An ADR is a short document describing a significant software design choice along with its context and consequences.
8
+
9
+ ## Structure
10
+
11
+ ```
12
+ architecture/
13
+ ├── 0001-initial-architecture.md
14
+ ├── 0002-database-choice.md
15
+ ├── 0003-api-design.md
16
+ └── README.md
17
+ ```
18
+
19
+ ## Creating an ADR
20
+
21
+ 1. Copy the template:
22
+
23
+ ```bash
24
+ cp templates/adr.template.md docs/architecture/{{ADR_NUMBER}}-{{DECISION_TITLE}}.md
25
+ ```
26
+
27
+ 2. Fill in the template with:
28
+ - Context and problem statement
29
+ - Considered options
30
+ - Decision outcome and rationale
31
+ - Consequences
32
+
33
+ ## Naming Convention
34
+
35
+ ADRs are numbered sequentially: `NNNN-short-title.md`
36
+
37
+ - `0001-initial-project-structure.md`
38
+ - `0002-authentication-strategy.md`
39
+ - `0003-database-migration-approach.md`
40
+
41
+ ## Status
42
+
43
+ ADRs can have the following statuses:
44
+
45
+ - **Proposed** - Under discussion
46
+ - **Accepted** - Decision made and being implemented
47
+ - **Deprecated** - No longer relevant
48
+ - **Superseded** - Replaced by another ADR
49
+
50
+ ## Index
51
+
52
+ <!-- Add your ADRs here as you create them -->
53
+
54
+ | ADR | Title | Status | Date |
55
+ | ---- | ---------------------------------------------- | -------- | -------- |
56
+ | 0001 | [Example Decision](./0001-example-decision.md) | Accepted | {{DATE}} |
@@ -0,0 +1,82 @@
1
+ # Features Documentation
2
+
3
+ This folder contains documentation for all features implemented in this project.
4
+
5
+ ## Structure
6
+
7
+ Each feature gets its own folder named after the issue ID and feature name:
8
+
9
+ ```
10
+ features/
11
+ ├── {{ISSUE_ID}}-FEATURE-NAME/
12
+ │ ├── spec.md # Functional specification
13
+ │ ├── plan.md # Implementation plan
14
+ │ └── [optional] # Additional files (diagrams, examples)
15
+ └── README.md # This file
16
+ ```
17
+
18
+ ## Creating Feature Documentation
19
+
20
+ ### 1. Create Feature Folder
21
+
22
+ ```bash
23
+ mkdir -p docs/features/{{ISSUE_ID}}-FEATURE-NAME
24
+ ```
25
+
26
+ ### 2. Generate Specification
27
+
28
+ Use the `/spec` command or copy the template:
29
+
30
+ ```bash
31
+ cp templates/feature-spec.template.md docs/features/{{ISSUE_ID}}-FEATURE-NAME/spec.md
32
+ ```
33
+
34
+ ### 3. Generate Implementation Plan
35
+
36
+ Use the `/plan` command or copy the template:
37
+
38
+ ```bash
39
+ cp templates/feature-plan.template.md docs/features/{{ISSUE_ID}}-FEATURE-NAME/plan.md
40
+ ```
41
+
42
+ ### 4. Update During Implementation
43
+
44
+ Keep documentation updated as:
45
+
46
+ - Requirements change
47
+ - Implementation details emerge
48
+ - New decisions are made
49
+
50
+ ## Naming Conventions
51
+
52
+ **Folder names** should follow this pattern:
53
+
54
+ - `{{ISSUE_ID}}-FEATURE-NAME`
55
+ - Issue ID from your issue tracker (e.g., `ISSUE-123`, `JIRA-456`)
56
+ - Feature name in kebab-case (e.g., `user-authentication`, `data-export`)
57
+
58
+ **Examples:**
59
+
60
+ - `ISSUE-123-user-authentication/`
61
+ - `JIRA-456-data-export-api/`
62
+ - `GH-789-dark-mode-support/`
63
+
64
+ ## Index of Features
65
+
66
+ <!-- Auto-generated or manually maintained list of features -->
67
+
68
+ ### Active Features
69
+
70
+ - [{{ISSUE_ID}}-FEATURE-NAME]({{ISSUE_ID}}-FEATURE-NAME/) - Brief description
71
+
72
+ ### Completed Features
73
+
74
+ - [{{ISSUE_ID}}-COMPLETED-FEATURE]({{ISSUE_ID}}-COMPLETED-FEATURE/) - Brief description
75
+
76
+ ### Deprecated Features
77
+
78
+ - [{{ISSUE_ID}}-DEPRECATED-FEATURE]({{ISSUE_ID}}-DEPRECATED-FEATURE/) - Deprecated on {{DATE}}
79
+
80
+ ---
81
+
82
+ **Last Updated**: {{DATE}}
@@ -0,0 +1,117 @@
1
+ # Fixes & Bug Documentation
2
+
3
+ This folder contains documentation for bug fixes and improvements.
4
+
5
+ ## Structure
6
+
7
+ ### Complex Fixes (Folders)
8
+
9
+ Complex fixes that require detailed documentation:
10
+
11
+ ```
12
+ fixes/
13
+ ├── {{ISSUE_ID}}-FIX-NAME/
14
+ │ ├── spec.md # Root cause analysis
15
+ │ ├── plan.md # Implementation plan
16
+ │ └── [optional] # Test cases, examples
17
+ ```
18
+
19
+ ### Simple Fixes (Monthly Logs)
20
+
21
+ Simple fixes documented in monthly aggregated logs:
22
+
23
+ ```
24
+ fixes/
25
+ ├── 2026-01.md # January 2026 fixes
26
+ ├── 2026-02.md # February 2026 fixes
27
+ └── 2026-03.md # March 2026 fixes
28
+ ```
29
+
30
+ ## Decision Tree: How to Document Fixes
31
+
32
+ **Before documenting, ask:**
33
+
34
+ 1. **Is this a complex fix?** (multi-file, architectural changes, affects multiple features)
35
+
36
+ - ✅ YES → Create folder `{{ISSUE_ID}}-FIX-NAME/` with `spec.md` + `plan.md`
37
+ - ❌ NO → Add entry to `{YYYY-MM}.md` (monthly log)
38
+
39
+ 2. **Does the monthly log for this month exist?**
40
+ - ❌ NO → Create it using the template
41
+ - ✅ YES → Add your fix as a new section
42
+
43
+ ## Creating Fix Documentation
44
+
45
+ ### For Simple Fixes (Use Monthly Log)
46
+
47
+ ```bash
48
+ # Check if current month's log exists
49
+ ls docs/fixes/$(date +%Y-%m).md
50
+
51
+ # If not, create from template
52
+ cp templates/monthly-fix-log.template.md docs/fixes/$(date +%Y-%m).md
53
+
54
+ # Edit and add your fix as a new section
55
+ ```
56
+
57
+ ### For Complex Fixes (Use Folder)
58
+
59
+ ```bash
60
+ # Create fix folder
61
+ mkdir -p docs/fixes/{{ISSUE_ID}}-FIX-NAME
62
+
63
+ # Copy templates
64
+ cp templates/complex-fix-spec.template.md docs/fixes/{{ISSUE_ID}}-FIX-NAME/spec.md
65
+ cp templates/complex-fix-plan.template.md docs/fixes/{{ISSUE_ID}}-FIX-NAME/plan.md
66
+
67
+ # Edit files and document root cause, solution, testing
68
+ ```
69
+
70
+ ## What NOT to Do
71
+
72
+ **❌ DO NOT create individual `.md` files for simple fixes:**
73
+
74
+ - ❌ `2025-10-database-connection-fix.md`
75
+ - ❌ `2025-10-auth-token-refresh.md`
76
+ - ❌ `fix-session-timeout.md`
77
+
78
+ **✅ Instead, add them as sections in the monthly log:**
79
+
80
+ - ✅ `2025-10.md` with a new `## [2025-10-24] - Database Connection Fix` section
81
+
82
+ ## Monthly Log Guidelines
83
+
84
+ ### File Creation
85
+
86
+ - Create **NEW** file when calendar month changes
87
+ - Do NOT append to previous month's file
88
+ - Use YYYY-MM.md naming format (e.g., `2026-01.md`)
89
+
90
+ ### Content
91
+
92
+ Each monthly log should contain:
93
+
94
+ - **Summary** - Overview of the month's focus
95
+ - **Fix entries** - Each with date, description, root cause, solution, impact
96
+ - **Patterns & Learnings** - Common issues and best practices discovered
97
+ - **Technical Debt** - Items to address in future
98
+
99
+ ### Format
100
+
101
+ Follow [Keep a Changelog](https://keepachangelog.com/) format for consistency.
102
+
103
+ ## Index of Fixes
104
+
105
+ ### Monthly Logs
106
+
107
+ - [2026-01.md](2026-01.md) - January 2026 fixes
108
+ - [2025-12.md](2025-12.md) - December 2025 fixes
109
+ - [2025-11.md](2025-11.md) - November 2025 fixes
110
+
111
+ ### Complex Fixes
112
+
113
+ - [{{ISSUE_ID}}-COMPLEX-FIX]({{ISSUE_ID}}-COMPLEX-FIX/) - Brief description
114
+
115
+ ---
116
+
117
+ **Last Updated**: {{DATE}}
@@ -0,0 +1,31 @@
1
+ {
2
+ "hooks": {
3
+ "SessionStart": [
4
+ {
5
+ "matcher": "startup|resume|clear|compact",
6
+ "hooks": [
7
+ {
8
+ "type": "command",
9
+ "command": "command -v node >/dev/null 2>&1 && node \"${CLAUDE_PLUGIN_ROOT}/hooks/ponytail-activate.js\" || exit 0",
10
+ "commandWindows": "if (Get-Command node -ErrorAction SilentlyContinue) { node \"$env:CLAUDE_PLUGIN_ROOT\\hooks\\ponytail-activate.js\" }",
11
+ "timeout": 5,
12
+ "statusMessage": "Loading ponytail mode..."
13
+ }
14
+ ]
15
+ }
16
+ ],
17
+ "UserPromptSubmit": [
18
+ {
19
+ "hooks": [
20
+ {
21
+ "type": "command",
22
+ "command": "command -v node >/dev/null 2>&1 && node \"${CLAUDE_PLUGIN_ROOT}/hooks/ponytail-mode-tracker.js\" || exit 0",
23
+ "commandWindows": "if (Get-Command node -ErrorAction SilentlyContinue) { node \"$env:CLAUDE_PLUGIN_ROOT\\hooks\\ponytail-mode-tracker.js\" }",
24
+ "timeout": 5,
25
+ "statusMessage": "Tracking ponytail mode..."
26
+ }
27
+ ]
28
+ }
29
+ ]
30
+ }
31
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "version": 1,
3
+ "hooks": {
4
+ "sessionStart": [
5
+ {
6
+ "type": "command",
7
+ "bash": "node \"${PLUGIN_ROOT}/hooks/ponytail-activate.js\"",
8
+ "powershell": "node \"${PLUGIN_ROOT}\\hooks\\ponytail-activate.js\"",
9
+ "timeoutSec": 5
10
+ }
11
+ ],
12
+ "userPromptSubmitted": [
13
+ {
14
+ "type": "command",
15
+ "bash": "node \"${PLUGIN_ROOT}/hooks/ponytail-mode-tracker.js\"",
16
+ "powershell": "node \"${PLUGIN_ROOT}\\hooks\\ponytail-mode-tracker.js\"",
17
+ "timeoutSec": 5
18
+ }
19
+ ]
20
+ }
21
+ }
@@ -0,0 +1,91 @@
1
+ #!/usr/bin/env node
2
+ // ponytail — Claude Code SessionStart activation hook
3
+ //
4
+ // Runs on every session start:
5
+ // 1. Writes flag file at $CLAUDE_CONFIG_DIR/.ponytail-active (defaults to ~/.claude; statusline reads this)
6
+ // 2. Emits ponytail ruleset as hidden SessionStart context
7
+ // 3. Detects missing statusline config and emits setup nudge
8
+
9
+ const fs = require('fs');
10
+ const path = require('path');
11
+ const { getDefaultMode, getClaudeDir, isShellSafe } = require('./ponytail-config');
12
+ const { getPonytailInstructions } = require('./ponytail-instructions');
13
+ const {
14
+ clearMode,
15
+ isCodex,
16
+ isCopilot,
17
+ setMode,
18
+ writeHookOutput,
19
+ } = require('./ponytail-runtime');
20
+
21
+ const claudeDir = getClaudeDir();
22
+ const settingsPath = path.join(claudeDir, 'settings.json');
23
+
24
+ const mode = getDefaultMode();
25
+
26
+ // "off" mode — skip activation entirely, don't write flag or emit rules
27
+ if (mode === 'off') {
28
+ clearMode();
29
+ const hookOutput = (isCodex || isCopilot) ? '' : 'OK';
30
+ writeHookOutput('SessionStart', 'off', hookOutput);
31
+ process.exit(0);
32
+ }
33
+
34
+ // 1. Write flag file
35
+ try {
36
+ setMode(mode);
37
+ } catch (e) {
38
+ // Silent fail -- flag is best-effort, don't block the hook
39
+ }
40
+
41
+ // 2. Emit the ponytail ruleset, filtered to the active intensity level.
42
+ let output = getPonytailInstructions(mode);
43
+
44
+ // 3. Detect missing statusline config — nudge Claude to help set it up
45
+ if (!isCodex && !isCopilot) try {
46
+ let hasStatusline = false;
47
+ if (fs.existsSync(settingsPath)) {
48
+ // Strip UTF-8 BOM some editors prepend on Windows (breaks JSON.parse)
49
+ const raw = fs.readFileSync(settingsPath, 'utf8').replace(/^\uFEFF/, '');
50
+ const settings = JSON.parse(raw);
51
+ if (settings.statusLine) {
52
+ hasStatusline = true;
53
+ }
54
+ }
55
+
56
+ if (!hasStatusline) {
57
+ const isWindows = process.platform === 'win32';
58
+ const scriptName = isWindows ? 'ponytail-statusline.ps1' : 'ponytail-statusline.sh';
59
+ const scriptPath = path.join(__dirname, scriptName);
60
+ if (isShellSafe(scriptPath)) {
61
+ const command = isWindows
62
+ ? `powershell -ExecutionPolicy Bypass -File "${scriptPath}"`
63
+ : `bash "${scriptPath}"`;
64
+ const statusLineSnippet =
65
+ '"statusLine": { "type": "command", "command": ' + JSON.stringify(command) + ' }';
66
+ output += "\n\n" +
67
+ "STATUSLINE SETUP NEEDED: The ponytail plugin includes a statusline badge showing active mode " +
68
+ "(e.g. [PONYTAIL], [PONYTAIL:ULTRA]). It is not configured yet. " +
69
+ "To enable, add this to ~/.claude/settings.json: " +
70
+ statusLineSnippet + " " +
71
+ "Proactively offer to set this up for the user on first interaction.";
72
+ } else {
73
+ // ponytail: install path has shell metacharacters — don't embed it in a
74
+ // command snippet; have the agent wire it up by hand instead.
75
+ output += "\n\n" +
76
+ "STATUSLINE SETUP NEEDED: The ponytail plugin includes a statusline badge showing active mode. " +
77
+ "Its install path contains characters unsafe to embed in a shell command, so configure it manually: " +
78
+ "add a statusLine command of type \"command\" that runs " + scriptName +
79
+ " from the plugin's hooks directory to ~/.claude/settings.json, quoting/escaping the path for your shell. " +
80
+ "Proactively offer to set this up for the user on first interaction.";
81
+ }
82
+ }
83
+ } catch (e) {
84
+ // Silent fail — don't block session start over statusline detection
85
+ }
86
+
87
+ try {
88
+ writeHookOutput('SessionStart', mode, output);
89
+ } catch (e) {
90
+ // Silent fail — stdout closed/EPIPE at hook exit must not surface as a hook failure
91
+ }
@@ -0,0 +1,122 @@
1
+ #!/usr/bin/env node
2
+ // ponytail — shared configuration resolver
3
+ //
4
+ // Resolution order for default mode:
5
+ // 1. PONYTAIL_DEFAULT_MODE environment variable
6
+ // 2. Config file defaultMode field:
7
+ // - $XDG_CONFIG_HOME/ponytail/config.json (any platform, if set)
8
+ // - ~/.config/ponytail/config.json (macOS / Linux fallback)
9
+ // - %APPDATA%\ponytail\config.json (Windows fallback)
10
+ // 3. 'full'
11
+
12
+ const fs = require('fs');
13
+ const path = require('path');
14
+ const os = require('os');
15
+
16
+ const DEFAULT_MODE = 'full';
17
+ const VALID_MODES = ['off', 'lite', 'full', 'ultra', 'review'];
18
+ const RUNTIME_MODES = ['off', 'lite', 'full', 'ultra'];
19
+
20
+ function normalizeMode(mode) {
21
+ if (typeof mode !== 'string') return null;
22
+ const normalized = mode.trim().toLowerCase();
23
+ return RUNTIME_MODES.includes(normalized) ? normalized : null;
24
+ }
25
+
26
+ function normalizeConfigMode(mode) {
27
+ if (typeof mode !== 'string') return null;
28
+ const normalized = mode.trim().toLowerCase();
29
+ return VALID_MODES.includes(normalized) ? normalized : null;
30
+ }
31
+
32
+ function normalizePersistedMode(mode) {
33
+ return normalizeMode(mode) || normalizeConfigMode(mode);
34
+ }
35
+
36
+ // "stop ponytail" / "normal mode" turn ponytail off, but only as a standalone
37
+ // command. Matching the phrase anywhere in the message turned it off mid-task
38
+ // for ordinary requests like "add a normal mode toggle" — so require the whole
39
+ // message to be the command, ignoring case and trailing punctuation.
40
+ function isDeactivationCommand(text) {
41
+ const t = String(text || '').trim().toLowerCase().replace(/[.!?\s]+$/, '');
42
+ return t === 'stop ponytail' || t === 'normal mode';
43
+ }
44
+
45
+ // ponytail: only embed the plugin install path in a statusline shell command when
46
+ // it's made of ordinary path characters. An allowlist beats escaping every shell's
47
+ // metacharacters; a hostile clone path (quotes, &, $, backtick, ;, etc.) falls back
48
+ // to manual setup instead. Allows : \ / for normal Windows and POSIX paths. Full
49
+ // per-shell escaper only if a real need appears.
50
+ function isShellSafe(p) {
51
+ return typeof p === 'string' && /^[A-Za-z0-9 _.\-:/\\~]+$/.test(p);
52
+ }
53
+
54
+ function getConfigDir() {
55
+ if (process.env.XDG_CONFIG_HOME) {
56
+ return path.join(process.env.XDG_CONFIG_HOME, 'ponytail');
57
+ }
58
+ if (process.platform === 'win32') {
59
+ return path.join(
60
+ process.env.APPDATA || path.join(os.homedir(), 'AppData', 'Roaming'),
61
+ 'ponytail'
62
+ );
63
+ }
64
+ return path.join(os.homedir(), '.config', 'ponytail');
65
+ }
66
+
67
+ function getConfigPath() {
68
+ return path.join(getConfigDir(), 'config.json');
69
+ }
70
+
71
+ function getClaudeDir() {
72
+ // ponytail: CLAUDE_CONFIG_DIR overrides ~/.claude, matching Claude Code.
73
+ return process.env.CLAUDE_CONFIG_DIR || path.join(os.homedir(), '.claude');
74
+ }
75
+
76
+ function getDefaultMode() {
77
+ // 1. Environment variable (highest priority)
78
+ const envMode = process.env.PONYTAIL_DEFAULT_MODE;
79
+ if (envMode && VALID_MODES.includes(envMode.toLowerCase())) {
80
+ return envMode.toLowerCase();
81
+ }
82
+
83
+ // 2. Config file
84
+ try {
85
+ const configPath = getConfigPath();
86
+ const config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
87
+ if (config.defaultMode && VALID_MODES.includes(config.defaultMode.toLowerCase())) {
88
+ return config.defaultMode.toLowerCase();
89
+ }
90
+ } catch (e) {
91
+ // Config file doesn't exist or is invalid — fall through
92
+ }
93
+
94
+ // 3. Default
95
+ return DEFAULT_MODE;
96
+ }
97
+
98
+ function writeDefaultMode(mode) {
99
+ const normalized = normalizeConfigMode(mode);
100
+ if (!normalized) return null;
101
+
102
+ const configPath = getConfigPath();
103
+ fs.mkdirSync(path.dirname(configPath), { recursive: true });
104
+ fs.writeFileSync(configPath, JSON.stringify({ defaultMode: normalized }, null, 2), 'utf8');
105
+ return normalized;
106
+ }
107
+
108
+ module.exports = {
109
+ DEFAULT_MODE,
110
+ VALID_MODES,
111
+ RUNTIME_MODES,
112
+ getDefaultMode,
113
+ getConfigDir,
114
+ getConfigPath,
115
+ getClaudeDir,
116
+ isShellSafe,
117
+ normalizeMode,
118
+ normalizeConfigMode,
119
+ normalizePersistedMode,
120
+ isDeactivationCommand,
121
+ writeDefaultMode,
122
+ };
@@ -0,0 +1,92 @@
1
+ #!/usr/bin/env node
2
+ // Shared Ponytail instruction builder for Claude hooks and Pi extension.
3
+
4
+ const fs = require('fs');
5
+ const path = require('path');
6
+ const { DEFAULT_MODE, normalizeMode, normalizePersistedMode } = require('./ponytail-config');
7
+
8
+ const INDEPENDENT_MODES = new Set(['review']);
9
+ const SKILL_PATH = path.join(__dirname, '..', '.agents', 'skills', 'ponytail', 'SKILL.md');
10
+
11
+ function filterSkillBodyForMode(body, mode) {
12
+ const effectiveMode = normalizeMode(mode) || DEFAULT_MODE;
13
+ const withoutFrontmatter = String(body || '').replace(/^---[\s\S]*?---\s*/, '');
14
+
15
+ // Only the intensity table rows and worked examples are mode-specific, and
16
+ // both are keyed by a mode name (lite/full/ultra). A bullet whose label is
17
+ // not a mode — e.g. "No unrequested abstractions: ..." — is a normal rule
18
+ // and must be kept verbatim.
19
+ return withoutFrontmatter
20
+ .split(/\r?\n/)
21
+ .filter((line) => {
22
+ const tableLabel = line.match(/^\|\s*\*\*(.+?)\*\*\s*\|/);
23
+ if (tableLabel) {
24
+ const labelMode = normalizeMode(tableLabel[1].trim());
25
+ if (labelMode) return labelMode === effectiveMode;
26
+ }
27
+
28
+ const exampleLabel = line.match(/^-\s*([^:]+):\s*/);
29
+ if (exampleLabel) {
30
+ const labelMode = normalizeMode(exampleLabel[1].trim());
31
+ if (labelMode) return labelMode === effectiveMode;
32
+ }
33
+
34
+ return true;
35
+ })
36
+ .join('\n');
37
+ }
38
+
39
+ function getFallbackInstructions(mode) {
40
+ return 'PONYTAIL MODE ACTIVE — level: ' + mode + '\n\n' +
41
+ 'You are a lazy senior developer. Lazy means efficient, not careless. The best code is the code never written.\n\n' +
42
+ '## Persistence\n\n' +
43
+ 'ACTIVE EVERY RESPONSE. No drift back to over-building. Still active if unsure. Off only: "stop ponytail" / "normal mode".\n\n' +
44
+ 'Current level: **' + mode + '**. Switch: `/ponytail lite|full|ultra`.\n\n' +
45
+ '## The ladder\n\n' +
46
+ 'Before any code, stop at the first rung that holds:\n' +
47
+ '1. Does this need to be built at all? (YAGNI)\n' +
48
+ '2. Does the standard library do this? Use it.\n' +
49
+ '3. Does a native platform feature cover it? Use it.\n' +
50
+ '4. Does an already-installed dependency solve it? Use it.\n' +
51
+ '5. Can this be one line? Make it one line.\n' +
52
+ '6. Only then: write the minimum code that works.\n\n' +
53
+ '## Rules\n\n' +
54
+ 'No abstractions that were not requested. No avoidable dependencies. No boilerplate nobody asked for. ' +
55
+ 'Deletion over addition. Boring over clever. Fewest files possible. ' +
56
+ 'Ship the lazy version and question the complex request in the same response — never stall. ' +
57
+ 'Between two same-size stdlib options, pick the one correct on edge cases. ' +
58
+ 'Mark intentional simplifications with a `ponytail:` comment — a shortcut with a known ceiling names the ceiling and the upgrade path in the comment.\n\n' +
59
+ '## Output\n\n' +
60
+ 'Code first. Then at most three short lines: what was skipped, when to add it. ' +
61
+ 'If the explanation is longer than the code, delete the explanation. ' +
62
+ 'Explanation the user explicitly asked for is not debt, give it in full.\n\n' +
63
+ '## When NOT to be lazy\n\n' +
64
+ 'Never simplify away: input validation at trust boundaries, error handling that prevents data loss, ' +
65
+ 'security measures, accessibility basics, the calibration real hardware needs (the platform is never the spec ideal), anything the user explicitly asked to keep. ' +
66
+ 'Lazy code without its check is unfinished: non-trivial logic leaves ONE runnable check behind (assert-based demo/self-check or one small test file; no frameworks). Trivial one-liners need no test.\n\n' +
67
+ '## Boundaries\n\n' +
68
+ 'Ponytail governs what you build, not how you talk. "stop ponytail" or "normal mode": revert. Level persists until changed or session end.';
69
+ }
70
+
71
+ function getPonytailInstructions(mode) {
72
+ const configuredMode = normalizePersistedMode(mode) || DEFAULT_MODE;
73
+
74
+ if (INDEPENDENT_MODES.has(configuredMode)) {
75
+ return 'PONYTAIL MODE ACTIVE — level: ' + configuredMode + '. Behavior defined by /ponytail-' + configuredMode + ' skill.';
76
+ }
77
+
78
+ const effectiveMode = normalizeMode(configuredMode) || DEFAULT_MODE;
79
+
80
+ try {
81
+ return 'PONYTAIL MODE ACTIVE — level: ' + effectiveMode + '\n\n' +
82
+ filterSkillBodyForMode(fs.readFileSync(SKILL_PATH, 'utf8'), effectiveMode);
83
+ } catch (e) {
84
+ return getFallbackInstructions(effectiveMode);
85
+ }
86
+ }
87
+
88
+ module.exports = {
89
+ filterSkillBodyForMode,
90
+ getFallbackInstructions,
91
+ getPonytailInstructions,
92
+ };
@@ -0,0 +1,55 @@
1
+ #!/usr/bin/env node
2
+ // ponytail — UserPromptSubmit hook to track which ponytail mode is active
3
+ // Inspects user input for /ponytail commands and writes mode to flag file
4
+
5
+ const { getDefaultMode, isDeactivationCommand } = require('./ponytail-config');
6
+ const { clearMode, setMode, writeHookOutput } = require('./ponytail-runtime');
7
+
8
+ let input = '';
9
+ process.stdin.on('data', chunk => { input += chunk; });
10
+ process.stdin.on('end', () => {
11
+ try {
12
+ // Strip UTF-8 BOM some shells prepend when piping (breaks JSON.parse)
13
+ const data = JSON.parse(input.replace(/^\uFEFF/, ''));
14
+ const prompt = (data.prompt || '').trim().toLowerCase();
15
+
16
+ // Match /ponytail commands
17
+ if (/^[/@$]ponytail/.test(prompt)) {
18
+ const parts = prompt.split(/\s+/);
19
+ const cmd = parts[0].replace(/^[@$]/, '/');
20
+ const arg = parts[1] || '';
21
+
22
+ let mode = null;
23
+
24
+ if (cmd === '/ponytail-review' || cmd === '/ponytail:ponytail-review') {
25
+ mode = 'review';
26
+ } else if (cmd === '/ponytail' || cmd === '/ponytail:ponytail') {
27
+ if (arg === 'lite') mode = 'lite';
28
+ else if (arg === 'full') mode = 'full';
29
+ else if (arg === 'ultra') mode = 'ultra';
30
+ else if (arg === 'off') mode = 'off';
31
+ else mode = getDefaultMode();
32
+ }
33
+
34
+ if (mode && mode !== 'off') {
35
+ setMode(mode);
36
+ writeHookOutput(
37
+ 'UserPromptSubmit',
38
+ mode,
39
+ 'PONYTAIL MODE CHANGED — level: ' + mode,
40
+ );
41
+ } else if (mode === 'off') {
42
+ clearMode();
43
+ writeHookOutput('UserPromptSubmit', 'off', 'PONYTAIL MODE OFF');
44
+ }
45
+ }
46
+
47
+ // Detect deactivation
48
+ if (isDeactivationCommand(prompt)) {
49
+ clearMode();
50
+ writeHookOutput('UserPromptSubmit', 'off', 'PONYTAIL MODE OFF');
51
+ }
52
+ } catch (e) {
53
+ // Silent fail
54
+ }
55
+ });