cc-codeconductor 1.1.0 → 1.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 (355) hide show
  1. package/README.md +34 -12
  2. package/dist/core/config/codeconductor-config.d.ts +2 -1
  3. package/dist/core/presets/package-paths.d.ts +1 -0
  4. package/dist/core/runner/runner-target.d.ts +32 -0
  5. package/dist/core/verification/verification-runner.d.ts +7 -0
  6. package/dist/index.d.ts +1 -1
  7. package/dist/index.js +2934 -761
  8. package/dist/library.js +103 -14
  9. package/dist/validation/schemas.d.ts +294 -61
  10. package/package.json +4 -1
  11. package/presets/agy/AGENTS.md +11 -10
  12. package/presets/agy/hooks.json +3 -3
  13. package/presets/agy/scripts/invoke-hook.cjs +119 -0
  14. package/presets/agy/skills/backlog/SKILL.md +40 -70
  15. package/presets/agy/skills/cc-spec-mutation/SKILL.md +165 -0
  16. package/presets/agy/skills/cc-tdd-cycle/SKILL.md +3 -0
  17. package/presets/agy/skills/evaluation/SKILL.md +61 -2
  18. package/presets/agy/skills/openspec/SKILL.md +49 -19
  19. package/presets/agy/skills/testing-tdd/SKILL.md +53 -0
  20. package/presets/agy/skills/using-cc-skills/SKILL.md +48 -0
  21. package/presets/agy/workflows/cc-api-contract.md +18 -0
  22. package/presets/agy/workflows/cc-ask.md +10 -10
  23. package/presets/agy/workflows/cc-council.md +4 -0
  24. package/presets/agy/workflows/cc-db-migration.md +18 -0
  25. package/presets/agy/workflows/cc-explore.md +2 -2
  26. package/presets/agy/workflows/cc-feature.md +22 -0
  27. package/presets/agy/workflows/cc-fix.md +18 -0
  28. package/presets/agy/workflows/cc-handoff.md +1 -1
  29. package/presets/agy/workflows/cc-iterative.md +14 -0
  30. package/presets/agy/workflows/cc-openspec.md +14 -0
  31. package/presets/agy/workflows/cc-prototype.md +1 -1
  32. package/presets/agy/workflows/cc-refactor.md +5 -1
  33. package/presets/agy/workflows/cc-review.md +5 -1
  34. package/presets/agy/workflows/cc-scorecard.md +2 -0
  35. package/presets/agy/workflows/cc-security.md +4 -0
  36. package/presets/agy/workflows/cc-spec-mutation.md +195 -0
  37. package/presets/agy/workflows/cc-tdd-cycle.md +15 -1
  38. package/presets/agy/workflows/cc-test-plan.md +5 -1
  39. package/presets/claude/commands/cc/api-contract.md +19 -1
  40. package/presets/claude/commands/cc/ask.md +1 -1
  41. package/presets/claude/commands/cc/backlog.md +1 -1
  42. package/presets/claude/commands/cc/clarify.md +1 -1
  43. package/presets/claude/commands/cc/council.md +4 -0
  44. package/presets/claude/commands/cc/db-migration.md +19 -1
  45. package/presets/claude/commands/cc/explore.md +1 -1
  46. package/presets/claude/commands/cc/feature.md +23 -1
  47. package/presets/claude/commands/cc/fix.md +22 -1
  48. package/presets/claude/commands/cc/handoff.md +1 -1
  49. package/presets/claude/commands/cc/iterative.md +15 -1
  50. package/presets/claude/commands/cc/openspec.md +15 -1
  51. package/presets/claude/commands/cc/prototype.md +1 -1
  52. package/presets/claude/commands/cc/refactor.md +5 -1
  53. package/presets/claude/commands/cc/review.md +8 -1
  54. package/presets/claude/commands/cc/scorecard.md +3 -1
  55. package/presets/claude/commands/cc/security.md +5 -1
  56. package/presets/claude/commands/cc/spec-mutation.md +194 -0
  57. package/presets/claude/commands/cc/tdd-cycle.md +18 -1
  58. package/presets/claude/commands/cc/test-plan.md +5 -1
  59. package/presets/claude/commands/cc/triage.md +1 -1
  60. package/presets/claude/settings.json +13 -11
  61. package/presets/claude/skills/android/SKILL.md +0 -1
  62. package/presets/claude/skills/api-versioning/SKILL.md +0 -1
  63. package/presets/claude/skills/backlog/SKILL.md +40 -70
  64. package/presets/claude/skills/django-orm/SKILL.md +0 -1
  65. package/presets/claude/skills/django-testing/SKILL.md +0 -1
  66. package/presets/claude/skills/evaluation/SKILL.md +47 -24
  67. package/presets/claude/skills/jpa-postgres/SKILL.md +0 -1
  68. package/presets/claude/skills/openspec/SKILL.md +46 -38
  69. package/presets/claude/skills/pagespeed-perf/SKILL.md +1 -2
  70. package/presets/claude/skills/python/SKILL.md +0 -1
  71. package/presets/claude/skills/python-django-stack/SKILL.md +0 -1
  72. package/presets/claude/skills/python-fastapi-stack/SKILL.md +0 -1
  73. package/presets/claude/skills/security/SKILL.md +0 -1
  74. package/presets/claude/skills/spring-boot-feature/SKILL.md +0 -1
  75. package/presets/claude/skills/spring-boot-kotlin/SKILL.md +0 -1
  76. package/presets/claude/skills/sqlalchemy/SKILL.md +0 -1
  77. package/presets/claude/skills/testing-strategy/SKILL.md +0 -1
  78. package/presets/claude/skills/testing-tdd/SKILL.md +53 -0
  79. package/presets/claude/skills/using-cc-skills/SKILL.md +48 -0
  80. package/presets/codex/AGENTS.md +19 -14
  81. package/presets/codex/commands/cc-ask.md +10 -10
  82. package/presets/codex/skills/android/SKILL.md +0 -1
  83. package/presets/codex/skills/api-versioning/SKILL.md +0 -1
  84. package/presets/codex/skills/backlog/SKILL.md +61 -0
  85. package/presets/codex/skills/cc-api-contract/SKILL.md +91 -0
  86. package/presets/codex/skills/cc-backlog/SKILL.md +108 -0
  87. package/presets/codex/skills/cc-clarify/SKILL.md +36 -0
  88. package/presets/codex/skills/cc-council/SKILL.md +96 -0
  89. package/presets/codex/skills/cc-db-migration/SKILL.md +92 -0
  90. package/presets/codex/skills/cc-explore/SKILL.md +40 -0
  91. package/presets/codex/skills/cc-feature/SKILL.md +162 -0
  92. package/presets/codex/skills/cc-fix/SKILL.md +172 -0
  93. package/presets/codex/skills/cc-handoff/SKILL.md +45 -0
  94. package/presets/codex/skills/cc-iterative/SKILL.md +150 -0
  95. package/presets/codex/skills/cc-openspec/SKILL.md +191 -0
  96. package/presets/codex/skills/cc-pagespeed/SKILL.md +124 -0
  97. package/presets/codex/skills/cc-prototype/SKILL.md +42 -0
  98. package/presets/codex/skills/cc-refactor/SKILL.md +167 -0
  99. package/presets/codex/skills/cc-review/SKILL.md +156 -0
  100. package/presets/codex/skills/cc-scorecard/SKILL.md +82 -0
  101. package/presets/codex/skills/cc-security/SKILL.md +186 -0
  102. package/presets/codex/skills/cc-spec-mutation/SKILL.md +196 -0
  103. package/presets/codex/skills/cc-tdd-cycle/SKILL.md +266 -0
  104. package/presets/codex/skills/cc-test-plan/SKILL.md +157 -0
  105. package/presets/codex/skills/cc-triage/SKILL.md +38 -0
  106. package/presets/codex/skills/django-orm/SKILL.md +0 -1
  107. package/presets/codex/skills/django-testing/SKILL.md +0 -1
  108. package/presets/codex/skills/evaluation/SKILL.md +65 -0
  109. package/presets/codex/skills/jpa-postgres/SKILL.md +0 -1
  110. package/presets/codex/skills/openspec/SKILL.md +66 -0
  111. package/presets/codex/skills/pagespeed-perf/SKILL.md +1 -2
  112. package/presets/codex/skills/python/SKILL.md +0 -1
  113. package/presets/codex/skills/python-django-stack/SKILL.md +0 -1
  114. package/presets/codex/skills/python-fastapi-stack/SKILL.md +0 -1
  115. package/presets/codex/skills/spring-boot-feature/SKILL.md +0 -1
  116. package/presets/codex/skills/spring-boot-kotlin/SKILL.md +0 -1
  117. package/presets/codex/skills/sqlalchemy/SKILL.md +0 -1
  118. package/presets/codex/skills/testing-strategy/SKILL.md +0 -1
  119. package/presets/codex/skills/testing-tdd/SKILL.md +53 -0
  120. package/presets/codex/skills/using-cc-skills/SKILL.md +48 -0
  121. package/presets/cursor/agents/architect.md +1 -1
  122. package/presets/cursor/agents/complexity-auditor.md +1 -1
  123. package/presets/cursor/agents/contract-builder.md +1 -1
  124. package/presets/cursor/agents/docs.md +1 -1
  125. package/presets/cursor/agents/goal-planner.md +1 -1
  126. package/presets/cursor/agents/implementer.md +2 -2
  127. package/presets/cursor/agents/orchestrator.md +3 -3
  128. package/presets/cursor/agents/reviewer.md +4 -4
  129. package/presets/cursor/agents/security-reviewer.md +1 -1
  130. package/presets/cursor/agents/task-coach.md +1 -1
  131. package/presets/cursor/agents/tester.md +1 -1
  132. package/presets/cursor/commands/cc/api-contract.md +19 -1
  133. package/presets/cursor/commands/cc/ask.md +1 -1
  134. package/presets/cursor/commands/cc/backlog.md +1 -1
  135. package/presets/cursor/commands/cc/clarify.md +1 -1
  136. package/presets/cursor/commands/cc/council.md +4 -0
  137. package/presets/cursor/commands/cc/db-migration.md +19 -1
  138. package/presets/cursor/commands/cc/explore.md +1 -1
  139. package/presets/cursor/commands/cc/feature.md +23 -1
  140. package/presets/cursor/commands/cc/fix.md +22 -1
  141. package/presets/cursor/commands/cc/handoff.md +1 -1
  142. package/presets/cursor/commands/cc/iterative.md +15 -1
  143. package/presets/cursor/commands/cc/openspec.md +15 -1
  144. package/presets/cursor/commands/cc/prototype.md +1 -1
  145. package/presets/cursor/commands/cc/refactor.md +5 -1
  146. package/presets/cursor/commands/cc/review.md +5 -1
  147. package/presets/cursor/commands/cc/scorecard.md +3 -1
  148. package/presets/cursor/commands/cc/security.md +5 -1
  149. package/presets/cursor/commands/cc/spec-mutation.md +194 -0
  150. package/presets/cursor/commands/cc/tdd-cycle.md +15 -1
  151. package/presets/cursor/commands/cc/test-plan.md +5 -1
  152. package/presets/cursor/commands/cc/triage.md +1 -1
  153. package/presets/cursor/skills/android/SKILL.md +0 -1
  154. package/presets/cursor/skills/api-versioning/SKILL.md +0 -1
  155. package/presets/cursor/skills/astro/SKILL.md +0 -1
  156. package/presets/cursor/skills/auth-token-inspector/SKILL.md +0 -1
  157. package/presets/cursor/skills/backlog/SKILL.md +40 -70
  158. package/presets/cursor/skills/code-review/SKILL.md +0 -1
  159. package/presets/cursor/skills/django-orm/SKILL.md +0 -1
  160. package/presets/cursor/skills/django-testing/SKILL.md +0 -1
  161. package/presets/cursor/skills/django-uv/SKILL.md +0 -1
  162. package/presets/cursor/skills/drizzle-schema-architect/SKILL.md +0 -1
  163. package/presets/cursor/skills/evaluation/SKILL.md +61 -4
  164. package/presets/cursor/skills/fastapi-pydantic-strict/SKILL.md +0 -1
  165. package/presets/cursor/skills/jpa-nplusone-detector/SKILL.md +0 -1
  166. package/presets/cursor/skills/jpa-postgres/SKILL.md +0 -1
  167. package/presets/cursor/skills/livewire-alpine-bridge/SKILL.md +0 -1
  168. package/presets/cursor/skills/nextjs-typescript/SKILL.md +0 -1
  169. package/presets/cursor/skills/openspec/SKILL.md +46 -36
  170. package/presets/cursor/skills/pagespeed-perf/SKILL.md +1 -2
  171. package/presets/cursor/skills/python/SKILL.md +0 -1
  172. package/presets/cursor/skills/python-django-stack/SKILL.md +0 -1
  173. package/presets/cursor/skills/python-fastapi-stack/SKILL.md +0 -1
  174. package/presets/cursor/skills/security/SKILL.md +0 -1
  175. package/presets/cursor/skills/seo-analytics-injector/SKILL.md +0 -1
  176. package/presets/cursor/skills/spring-auth-auditor/SKILL.md +0 -1
  177. package/presets/cursor/skills/spring-boot-feature/SKILL.md +0 -1
  178. package/presets/cursor/skills/spring-boot-kotlin/SKILL.md +0 -1
  179. package/presets/cursor/skills/spring-boot-testing-strategy/SKILL.md +0 -1
  180. package/presets/cursor/skills/sqlalchemy/SKILL.md +0 -1
  181. package/presets/cursor/skills/tailwind-responsive-auditor/SKILL.md +0 -1
  182. package/presets/cursor/skills/tdd-mutation-tester/SKILL.md +0 -1
  183. package/presets/cursor/skills/testing-tdd/SKILL.md +35 -574
  184. package/presets/cursor/skills/using-cc-skills/SKILL.md +48 -0
  185. package/presets/gemini/GEMINI.md +38 -0
  186. package/presets/gemini/commands/cc/api-contract.toml +86 -0
  187. package/presets/gemini/commands/cc/ask.toml +54 -0
  188. package/presets/gemini/commands/cc/backlog.toml +103 -0
  189. package/presets/gemini/commands/cc/clarify.toml +31 -0
  190. package/presets/gemini/commands/cc/council.toml +91 -0
  191. package/presets/gemini/commands/cc/db-migration.toml +87 -0
  192. package/presets/gemini/commands/cc/explore.toml +35 -0
  193. package/presets/gemini/commands/cc/feature.toml +157 -0
  194. package/presets/gemini/commands/cc/fix.toml +167 -0
  195. package/presets/gemini/commands/cc/handoff.toml +40 -0
  196. package/presets/gemini/commands/cc/iterative.toml +145 -0
  197. package/presets/gemini/commands/cc/openspec.toml +186 -0
  198. package/presets/gemini/commands/cc/pagespeed.toml +119 -0
  199. package/presets/gemini/commands/cc/prototype.toml +37 -0
  200. package/presets/gemini/commands/cc/refactor.toml +162 -0
  201. package/presets/gemini/commands/cc/review.toml +151 -0
  202. package/presets/gemini/commands/cc/scorecard.toml +77 -0
  203. package/presets/gemini/commands/cc/security.toml +181 -0
  204. package/presets/gemini/commands/cc/spec-mutation.toml +191 -0
  205. package/presets/gemini/commands/cc/tdd-cycle.toml +261 -0
  206. package/presets/gemini/commands/cc/test-plan.toml +152 -0
  207. package/presets/gemini/commands/cc/triage.toml +33 -0
  208. package/presets/gemini/settings.json +3 -0
  209. package/presets/opencode/README.md +24 -21
  210. package/presets/opencode/agents/architect.md +6 -0
  211. package/presets/opencode/agents/docs.md +1 -1
  212. package/presets/opencode/agents/implementer.md +7 -0
  213. package/presets/opencode/agents/reviewer.md +7 -1
  214. package/presets/opencode/agents/tester.md +6 -0
  215. package/presets/opencode/commands/cc-api-contract.md +18 -0
  216. package/presets/opencode/commands/cc-ask.md +10 -10
  217. package/presets/opencode/commands/cc-council.md +4 -0
  218. package/presets/opencode/commands/cc-db-migration.md +18 -0
  219. package/presets/opencode/commands/cc-explore.md +2 -2
  220. package/presets/opencode/commands/cc-feature.md +22 -0
  221. package/presets/opencode/commands/cc-fix.md +21 -0
  222. package/presets/opencode/commands/cc-handoff.md +1 -1
  223. package/presets/opencode/commands/cc-iterative.md +14 -0
  224. package/presets/opencode/commands/cc-openspec.md +14 -0
  225. package/presets/opencode/commands/cc-prototype.md +1 -1
  226. package/presets/opencode/commands/cc-refactor.md +5 -1
  227. package/presets/opencode/commands/cc-review.md +5 -1
  228. package/presets/opencode/commands/cc-scorecard.md +2 -0
  229. package/presets/opencode/commands/cc-security.md +4 -0
  230. package/presets/opencode/commands/cc-spec-mutation.md +194 -0
  231. package/presets/opencode/commands/cc-tdd-cycle.md +15 -1
  232. package/presets/opencode/commands/cc-test-plan.md +5 -1
  233. package/presets/opencode/opencode.jsonc +1 -1
  234. package/presets/opencode/prompts/v1.0.0/README.md +1 -1
  235. package/presets/opencode/prompts/v1.0.0/architect.md +6 -0
  236. package/presets/opencode/prompts/v1.0.0/docs.md +1 -1
  237. package/presets/opencode/prompts/v1.0.0/implementer.md +7 -0
  238. package/presets/opencode/prompts/v1.0.0/reviewer.md +7 -1
  239. package/presets/opencode/prompts/v1.0.0/tester.md +6 -0
  240. package/presets/opencode/skills/android/SKILL.md +0 -1
  241. package/presets/opencode/skills/api-versioning/SKILL.md +0 -1
  242. package/presets/opencode/skills/astro/SKILL.md +0 -1
  243. package/presets/opencode/skills/auth-token-inspector/SKILL.md +0 -1
  244. package/presets/opencode/skills/backlog/SKILL.md +40 -70
  245. package/presets/opencode/skills/code-review/SKILL.md +0 -1
  246. package/presets/opencode/skills/django-orm/SKILL.md +0 -1
  247. package/presets/opencode/skills/django-testing/SKILL.md +0 -1
  248. package/presets/opencode/skills/django-uv/SKILL.md +0 -1
  249. package/presets/opencode/skills/drizzle-schema-architect/SKILL.md +0 -1
  250. package/presets/opencode/skills/evaluation/SKILL.md +61 -2
  251. package/presets/opencode/skills/fastapi-pydantic-strict/SKILL.md +0 -1
  252. package/presets/opencode/skills/jpa-nplusone-detector/SKILL.md +0 -1
  253. package/presets/opencode/skills/jpa-postgres/SKILL.md +0 -1
  254. package/presets/opencode/skills/livewire-alpine-bridge/SKILL.md +0 -1
  255. package/presets/opencode/skills/nextjs-typescript/SKILL.md +0 -1
  256. package/presets/opencode/skills/openspec/SKILL.md +46 -34
  257. package/presets/opencode/skills/pagespeed-perf/SKILL.md +1 -2
  258. package/presets/opencode/skills/python/SKILL.md +0 -1
  259. package/presets/opencode/skills/python-django-stack/SKILL.md +0 -1
  260. package/presets/opencode/skills/python-fastapi-stack/SKILL.md +0 -1
  261. package/presets/opencode/skills/security/SKILL.md +0 -1
  262. package/presets/opencode/skills/seo-analytics-injector/SKILL.md +0 -1
  263. package/presets/opencode/skills/spring-auth-auditor/SKILL.md +0 -1
  264. package/presets/opencode/skills/spring-boot-feature/SKILL.md +0 -1
  265. package/presets/opencode/skills/spring-boot-kotlin/SKILL.md +0 -1
  266. package/presets/opencode/skills/spring-boot-testing-strategy/SKILL.md +0 -1
  267. package/presets/opencode/skills/sqlalchemy/SKILL.md +0 -1
  268. package/presets/opencode/skills/tailwind-responsive-auditor/SKILL.md +0 -1
  269. package/presets/opencode/skills/tdd-mutation-tester/SKILL.md +0 -1
  270. package/presets/opencode/skills/testing-tdd/SKILL.md +35 -574
  271. package/presets/opencode/skills/using-cc-skills/SKILL.md +48 -0
  272. package/presets/pi/AGENTS.md +43 -0
  273. package/presets/pi/settings.json +3 -0
  274. package/presets/seo-hotel/skills/astro-seo/SKILL.md +0 -1
  275. package/presets/seo-hotel/skills/geo-readiness/SKILL.md +0 -1
  276. package/presets/seo-hotel/skills/off-page/SKILL.md +0 -1
  277. package/presets/seo-hotel/skills/schema-validator/SKILL.md +0 -1
  278. package/presets/seo-hotel/skills/seo-audit/SKILL.md +0 -1
  279. package/presets/shared/invoke-hook.cjs +119 -0
  280. package/presets/shared/mutation_runner.py +273 -0
  281. package/src/presets/council/council.yml +12 -9
  282. package/src/presets/manifests/agy.yml +3 -1
  283. package/src/presets/manifests/claude.yml +3 -0
  284. package/src/presets/manifests/gemini.yml +15 -0
  285. package/src/presets/manifests/pi.yml +25 -0
  286. package/src/presets/models/agy.yml +2 -128
  287. package/src/presets/models/claude.yml +2 -144
  288. package/src/presets/models/codex.yml +2 -144
  289. package/src/presets/models/cursor.yml +2 -144
  290. package/src/presets/models/gemini.yml +2 -144
  291. package/src/presets/models/opencode.yml +3 -101
  292. package/src/presets/models/pi.yml +5 -0
  293. package/src/presets/models/roles.yml +193 -0
  294. package/src/presets/shared-skills.yml +64 -0
  295. package/src/presets/targets/agy.yml +11 -0
  296. package/src/presets/targets/claude.yml +12 -0
  297. package/src/presets/targets/codex.yml +14 -0
  298. package/src/presets/targets/cursor.yml +11 -0
  299. package/src/presets/targets/gemini.yml +15 -0
  300. package/src/presets/targets/opencode.yml +13 -0
  301. package/src/presets/targets/pi.yml +12 -0
  302. package/presets/agy/scripts/post-tool.sh +0 -25
  303. package/presets/agy/scripts/pre-tool.sh +0 -56
  304. package/presets/opencode/prompts/v0.1.0/DEPRECATED.md +0 -11
  305. package/presets/opencode/prompts/v0.1.0/architect.md +0 -213
  306. package/presets/opencode/prompts/v0.1.0/docs.md +0 -181
  307. package/presets/opencode/prompts/v0.1.0/implementer.md +0 -154
  308. package/presets/opencode/prompts/v0.1.0/orchestrator.md +0 -169
  309. package/presets/opencode/prompts/v0.1.0/repo-explorer.md +0 -102
  310. package/presets/opencode/prompts/v0.1.0/reviewer.md +0 -183
  311. package/presets/opencode/prompts/v0.1.0/task-coach.md +0 -142
  312. package/presets/opencode/prompts/v0.1.0/tester.md +0 -160
  313. package/presets/opencode/prompts/v0.2.0/DEPRECATED.md +0 -11
  314. package/presets/opencode/prompts/v0.2.0/architect.md +0 -219
  315. package/presets/opencode/prompts/v0.2.0/docs.md +0 -187
  316. package/presets/opencode/prompts/v0.2.0/implementer.md +0 -160
  317. package/presets/opencode/prompts/v0.2.0/orchestrator.md +0 -238
  318. package/presets/opencode/prompts/v0.2.0/repo-explorer.md +0 -108
  319. package/presets/opencode/prompts/v0.2.0/reviewer.md +0 -190
  320. package/presets/opencode/prompts/v0.2.0/task-coach.md +0 -153
  321. package/presets/opencode/prompts/v0.2.0/tester.md +0 -249
  322. package/presets/opencode/prompts/v0.3.0/DEPRECATED.md +0 -11
  323. package/presets/opencode/prompts/v0.3.0/architect.md +0 -221
  324. package/presets/opencode/prompts/v0.3.0/docs.md +0 -189
  325. package/presets/opencode/prompts/v0.3.0/implementer.md +0 -162
  326. package/presets/opencode/prompts/v0.3.0/orchestrator.md +0 -360
  327. package/presets/opencode/prompts/v0.3.0/repo-explorer.md +0 -110
  328. package/presets/opencode/prompts/v0.3.0/reviewer.md +0 -225
  329. package/presets/opencode/prompts/v0.3.0/task-coach.md +0 -155
  330. package/presets/opencode/prompts/v0.3.0/tester.md +0 -251
  331. package/presets/opencode/prompts/v0.4.0/DEPRECATED.md +0 -11
  332. package/presets/opencode/prompts/v0.4.0/architect.md +0 -221
  333. package/presets/opencode/prompts/v0.4.0/complexity-auditor.md +0 -89
  334. package/presets/opencode/prompts/v0.4.0/docs.md +0 -189
  335. package/presets/opencode/prompts/v0.4.0/implementer.md +0 -162
  336. package/presets/opencode/prompts/v0.4.0/orchestrator.md +0 -348
  337. package/presets/opencode/prompts/v0.4.0/repo-explorer.md +0 -110
  338. package/presets/opencode/prompts/v0.4.0/reviewer.md +0 -225
  339. package/presets/opencode/prompts/v0.4.0/task-coach.md +0 -155
  340. package/presets/opencode/prompts/v0.4.0/tester.md +0 -251
  341. package/presets/opencode/prompts/v0.5.0/architect.md +0 -222
  342. package/presets/opencode/prompts/v0.5.0/complexity-auditor.md +0 -91
  343. package/presets/opencode/prompts/v0.5.0/contract-builder.md +0 -84
  344. package/presets/opencode/prompts/v0.5.0/docs.md +0 -190
  345. package/presets/opencode/prompts/v0.5.0/goal-planner.md +0 -80
  346. package/presets/opencode/prompts/v0.5.0/implementer.md +0 -171
  347. package/presets/opencode/prompts/v0.5.0/orchestrator.md +0 -388
  348. package/presets/opencode/prompts/v0.5.0/repo-explorer.md +0 -111
  349. package/presets/opencode/prompts/v0.5.0/reviewer.md +0 -248
  350. package/presets/opencode/prompts/v0.5.0/security-reviewer.md +0 -123
  351. package/presets/opencode/prompts/v0.5.0/task-coach.md +0 -156
  352. package/presets/opencode/prompts/v0.5.0/tester.md +0 -252
  353. package/presets/opencode/prompts/v0.6.0/implementer.md +0 -35
  354. package/presets/opencode/prompts/v0.6.0/planner.md +0 -36
  355. package/presets/opencode/prompts/v0.6.0/reviewer.md +0 -40
@@ -0,0 +1,43 @@
1
+ <!-- CODECONDUCTOR:BEGIN managed -->
2
+
3
+ # CodeConductor — Pi Preset
4
+
5
+ This file configures CodeConductor for **Pi** (pi.dev — `earendil-works/pi`,
6
+ the coding-agent CLI, not Inflection's Pi). It lives at the project root
7
+ (`AGENTS.md`) so Pi's context-file loader picks it up automatically.
8
+
9
+ ## Behavioral Discipline
10
+
11
+ 1. **Think Before Coding** — state assumptions; ask if uncertain; present
12
+ alternatives instead of picking silently.
13
+ 2. **Simplicity First** — minimum code that solves the problem; no
14
+ speculative abstractions.
15
+ 3. **Surgical Changes** — touch only what the task requires; match existing
16
+ style; remove only what your own change made unused.
17
+ 4. **Goal-Driven Execution** — turn the task into a verifiable goal with a
18
+ success check; loop until it passes.
19
+
20
+ ## Commands
21
+
22
+ CodeConductor ships its slash commands as Pi prompt templates under
23
+ `.pi/prompts/`, invoked as `/cc-<name>` (e.g. `/cc-feature`, `/cc-review`).
24
+ Run `/cc-ask "<problem>"` when unsure which one applies — it recommends
25
+ exactly one and stops; it does not start the workflow.
26
+
27
+ Skills live under `.agents/skills/` (shared with the agy preset — Pi
28
+ discovers skills there natively, per its own docs). Read
29
+ `.agents/skills/using-cc-skills/SKILL.md` first — it maps intent to the
30
+ right slash command.
31
+
32
+ Pi has no Task tool or subagents: every command runs in your own session.
33
+ Where a step says "adopt the `X` role", read the matching file under
34
+ `.agents/agents/` (short) or `.agents/prompts/v1.0.0/` (full contract) and
35
+ act as that role for the rest of the step.
36
+
37
+ ## What never changes
38
+
39
+ - Do not invoke the Implementer without an accepted Technical Plan.
40
+ - Do not skip the Reviewer step for medium- or high-risk changes.
41
+ - Do not store secrets in any file loaded by Pi.
42
+
43
+ <!-- CODECONDUCTOR:END managed -->
@@ -0,0 +1,3 @@
1
+ {
2
+ "enableSkillCommands": true
3
+ }
@@ -1,6 +1,5 @@
1
1
  ---
2
2
  id: astro-seo
3
- version: 1.0.0
4
3
  name: Astro SEO Validator
5
4
  description: >
6
5
  SEO validation specific to Astro framework projects. Checks static generation,
@@ -1,6 +1,5 @@
1
1
  ---
2
2
  id: geo-readiness
3
- version: 1.0.0
4
3
  name: GEO Readiness Checker
5
4
  description: >
6
5
  Validates AI-search readiness (Generative Engine Optimization) for hotel websites.
@@ -1,6 +1,5 @@
1
1
  ---
2
2
  id: off-page
3
- version: 1.0.0
4
3
  name: SEO Off-Page & Marketing
5
4
  description: >
6
5
  Guidance for off-page SEO strategy specific to hotel and hospitality websites.
@@ -1,6 +1,5 @@
1
1
  ---
2
2
  id: schema-validator
3
- version: 1.0.0
4
3
  name: Schema.org Validator
5
4
  description: >
6
5
  Validates Schema.org structured data (JSON-LD, Microdata, RDFa) on hotel and hospitality websites.
@@ -1,6 +1,5 @@
1
1
  ---
2
2
  id: seo-audit
3
- version: 1.0.0
4
3
  name: SEO Technical Audit
5
4
  description: >
6
5
  Comprehensive technical SEO audit for hotel websites. Checks meta tags, headings,
@@ -0,0 +1,119 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+
4
+ const { spawnSync } = require('node:child_process');
5
+ const { existsSync } = require('node:fs');
6
+ const { join, resolve } = require('node:path');
7
+
8
+ const VALID_EVENTS = ['pre-tool', 'post-tool', 'session-start'];
9
+ const SPAWN_TIMEOUT = 10000;
10
+
11
+ const rawArgs = process.argv.slice(1);
12
+ const args = rawArgs.filter((arg) => {
13
+ if (VALID_EVENTS.includes(arg) || arg.startsWith('-')) return true;
14
+ return false;
15
+ });
16
+
17
+ const event = args.find((a) => VALID_EVENTS.includes(a)) || 'pre-tool';
18
+ const extra = args.filter((a) => a !== event);
19
+ const isAgy = process.argv.some((a) => a === '--format=agy') || extra.includes('--format=agy');
20
+
21
+ function findProjectRoot() {
22
+ const candidates = [
23
+ process.env.PROJECT_ROOT,
24
+ process.env.WORKSPACE_DIR,
25
+ resolve(__dirname, '..', '..'),
26
+ process.cwd(),
27
+ ].filter(Boolean);
28
+
29
+ for (const dir of candidates) {
30
+ if (
31
+ existsSync(join(dir, 'package.json')) ||
32
+ existsSync(join(dir, '.git')) ||
33
+ existsSync(join(dir, '.agents')) ||
34
+ existsSync(join(dir, '.claude'))
35
+ ) {
36
+ return dir;
37
+ }
38
+ }
39
+ return resolve(__dirname, '..', '..');
40
+ }
41
+
42
+ const projectRoot = findProjectRoot();
43
+
44
+ /**
45
+ * Run one candidate runner. Stdout/stderr are captured (not inherited) so a
46
+ * candidate that writes partial output before failing can never leak onto
47
+ * this process's real stdout ahead of a later candidate's output or the
48
+ * fallback JSON — every event this process ever emits on stdout must be a
49
+ * single clean document. Stderr is diagnostic-only and safe to relay
50
+ * unconditionally; stdout is only ever relayed on the two branches that
51
+ * immediately exit, so nothing else can write to stdout afterward.
52
+ */
53
+ function tryRun(bin, runArgs) {
54
+ try {
55
+ const result = spawnSync(bin, runArgs, {
56
+ cwd: projectRoot,
57
+ stdio: ['inherit', 'pipe', 'pipe'],
58
+ windowsHide: true,
59
+ env: process.env,
60
+ encoding: 'utf8',
61
+ timeout: SPAWN_TIMEOUT,
62
+ });
63
+ if (result.error) {
64
+ return false;
65
+ }
66
+ if (result.stderr) {
67
+ process.stderr.write(result.stderr);
68
+ }
69
+ if (result.status === 0) {
70
+ if (result.stdout) process.stdout.write(result.stdout);
71
+ process.exit(0);
72
+ }
73
+ if (!isAgy && result.status === 2) {
74
+ process.exit(2);
75
+ }
76
+ return false;
77
+ } catch {
78
+ return false;
79
+ }
80
+ }
81
+
82
+ function fallback() {
83
+ if (isAgy) {
84
+ if (event === 'post-tool' || event === 'session-start') {
85
+ process.stdout.write('{}\n');
86
+ } else {
87
+ process.stdout.write('{"decision":"allow"}\n');
88
+ }
89
+ }
90
+ process.exit(0);
91
+ }
92
+
93
+ try {
94
+ // spawnSync('bun', ['--version']) as a pre-check before every real attempt
95
+ // used to cost a second subprocess on every single hook invocation. A
96
+ // missing/unrunnable 'bun' already surfaces as `result.error` inside
97
+ // tryRun(), so the pre-check is redundant — dropping it halves the spawn
98
+ // count (and the worst-case latency) for the common case where bun exists.
99
+ const srcMain = join(projectRoot, 'src', 'cli', 'main.ts');
100
+ if (existsSync(srcMain)) {
101
+ tryRun('bun', ['run', srcMain, 'hook', event, ...extra]);
102
+ }
103
+
104
+ const packaged = join(projectRoot, 'node_modules', 'cc-codeconductor', 'dist', 'index.js');
105
+ if (existsSync(packaged)) {
106
+ tryRun(process.execPath, [packaged, 'hook', event, ...extra]);
107
+ }
108
+
109
+ const localDist = join(projectRoot, 'dist', 'index.js');
110
+ if (existsSync(localDist)) {
111
+ tryRun(process.execPath, [localDist, 'hook', event, ...extra]);
112
+ }
113
+
114
+ tryRun('npx', ['--no-install', 'cc-codeconductor', 'hook', event, ...extra]);
115
+ } catch {
116
+ // Ignore errors in runner attempts
117
+ }
118
+
119
+ fallback();
@@ -0,0 +1,273 @@
1
+ #!/usr/bin/env python3
2
+ """Deterministic mutation-testing runner (stdlib only).
3
+
4
+ Applies single syntactic mutations over comparison operators in a Python
5
+ production file and re-runs the test suite per mutant. If a mutant survives
6
+ (tests still pass), the runner writes a handoff for the `tdd_craftsman` agent
7
+ (`specs/handover.md`, appended to `specs/implementation-summary.md`, optional
8
+ Engram/MCP memory hook) and exits with code 2 (HANDS_OFF). If every mutant is
9
+ killed, it exits 0 (PASS). The original source is always restored.
10
+
11
+ Usage:
12
+ python3 mutation_runner.py --target src/billing.py \
13
+ --test-command "pytest tests/test_billing.py" [--spec-folder specs]
14
+ """
15
+ import argparse
16
+ import ast
17
+ import difflib
18
+ import json
19
+ import os
20
+ import shutil
21
+ import subprocess
22
+ import sys
23
+ from dataclasses import asdict, dataclass
24
+ from pathlib import Path
25
+ from typing import Dict, List, Optional, Tuple
26
+
27
+
28
+ @dataclass(frozen=True)
29
+ class MutationRecord:
30
+ mutant_id: str
31
+ target_file: str
32
+ line_number: int
33
+ original_op: str
34
+ mutated_op: str
35
+ diff: str
36
+ survived: bool
37
+ details: str
38
+
39
+
40
+ class DeterministicOperatorMutator(ast.NodeTransformer):
41
+ """Applies one deterministic syntactic mutation over a comparison operator."""
42
+
43
+ OP_MAP = {
44
+ ast.Gt: ast.LtE, # > -> <=
45
+ ast.Lt: ast.GtE, # < -> >=
46
+ ast.GtE: ast.Lt, # >= -> <
47
+ ast.LtE: ast.Gt, # <= -> >
48
+ ast.Eq: ast.NotEq, # == -> !=
49
+ ast.NotEq: ast.Eq, # != -> ==
50
+ ast.Is: ast.IsNot, # is -> is not
51
+ ast.IsNot: ast.Is, # is not -> is
52
+ }
53
+
54
+ def __init__(self, target_index: int):
55
+ super().__init__()
56
+ self.target_index = target_index
57
+ self.current_index = 0
58
+ self.applied_mutation: Optional[Tuple[int, str, str]] = None
59
+
60
+ def visit_Compare(self, node: ast.Compare) -> ast.AST:
61
+ mutated_ops = []
62
+ modified = False
63
+
64
+ for op in node.ops:
65
+ op_type = type(op)
66
+ if op_type in self.OP_MAP:
67
+ if self.current_index == self.target_index:
68
+ new_op = self.OP_MAP[op_type]()
69
+ mutated_ops.append(new_op)
70
+ modified = True
71
+ self.applied_mutation = (
72
+ node.lineno,
73
+ op_type.__name__,
74
+ type(new_op).__name__,
75
+ )
76
+ else:
77
+ mutated_ops.append(op)
78
+ self.current_index += 1
79
+ else:
80
+ mutated_ops.append(op)
81
+
82
+ if modified:
83
+ node.ops = mutated_ops
84
+ return node
85
+ return self.generic_visit(node)
86
+
87
+
88
+ class MutationEngine:
89
+ def __init__(self, target_file: str, test_command: str, spec_folder: str = "specs"):
90
+ self.target_file = Path(target_file).resolve()
91
+ self.test_command = test_command
92
+ self.spec_folder = Path(spec_folder)
93
+ self.original_source = self.target_file.read_text(encoding="utf-8")
94
+ self.spec_folder.mkdir(parents=True, exist_ok=True)
95
+
96
+ def _count_mutation_points(self) -> int:
97
+ tree = ast.parse(self.original_source)
98
+ count = 0
99
+ for node in ast.walk(tree):
100
+ if isinstance(node, ast.Compare):
101
+ for op in node.ops:
102
+ if type(op) in DeterministicOperatorMutator.OP_MAP:
103
+ count += 1
104
+ return count
105
+
106
+ def _clear_bytecode_cache(self) -> None:
107
+ """Removes cached bytecode for the target so mutants are not shadowed
108
+ by a stale .pyc with an equal-mtimestamp source."""
109
+ cache_dir = self.target_file.parent / "__pycache__"
110
+ if cache_dir.is_dir():
111
+ for pyc in cache_dir.glob(f"{self.target_file.stem}.*.pyc"):
112
+ pyc.unlink(missing_ok=True)
113
+
114
+ def _run_test_suite(self) -> bool:
115
+ """Runs the test suite. Returns True if every test passes."""
116
+ self._clear_bytecode_cache()
117
+ env = {**os.environ, "PYTHONDONTWRITEBYTECODE": "1"}
118
+ result = subprocess.run(
119
+ self.test_command,
120
+ shell=True,
121
+ stdout=subprocess.PIPE,
122
+ stderr=subprocess.PIPE,
123
+ text=True,
124
+ env=env,
125
+ )
126
+ return result.returncode == 0
127
+
128
+ def _create_diff(self, mutated_source: str) -> str:
129
+ return "\n".join(
130
+ difflib.unified_diff(
131
+ self.original_source.splitlines(),
132
+ mutated_source.splitlines(),
133
+ fromfile=f"a/{self.target_file.name}",
134
+ tofile=f"b/{self.target_file.name}",
135
+ lineterm="",
136
+ )
137
+ )
138
+
139
+ def _persist_to_engram_or_markdown(self, record: MutationRecord) -> None:
140
+ """Documents the handoff in handover.md and implementation-summary.md."""
141
+ markdown_summary = self.spec_folder / "implementation-summary.md"
142
+ handover_file = self.spec_folder / "handover.md"
143
+
144
+ payload_md = f"""## Mutation Gate: Survivor Detected (TDD Gap)
145
+ - **Target File**: `{record.target_file}`
146
+ - **Line**: {record.line_number}
147
+ - **Mutant ID**: `{record.mutant_id}`
148
+ - **Operator Change**: `{record.original_op}` -> `{record.mutated_op}`
149
+ - **Status**: SURVIVED (Scorecard Real Coverage: 0)
150
+
151
+ ### Reproduction Diff
152
+ ```diff
153
+ {record.diff}
154
+ ```
155
+
156
+ ### Action Required by `tdd_craftsman`
157
+
158
+ 1. Do NOT touch production implementation.
159
+ 2. Write a minimal failing test (TDD Law 1 & 2) that asserts this branch condition.
160
+ 3. Verify the test turns red before re-verifying production code.
161
+ """
162
+ # Handover update for continuity
163
+ handover_file.write_text(payload_md, encoding="utf-8")
164
+
165
+ with markdown_summary.open("a", encoding="utf-8") as f:
166
+ f.write(f"\n\n{payload_md}")
167
+
168
+ # Optional Engram / MCP memory integration
169
+ self._notify_engram(record)
170
+
171
+ def _notify_engram(self, record: MutationRecord) -> None:
172
+ """Invokes the local Engram/Memory Engine hook or CLI if present."""
173
+ if shutil.which("engram"):
174
+ try:
175
+ subprocess.run(
176
+ [
177
+ "engram",
178
+ "memory:save",
179
+ "--tag",
180
+ "mutation_testing",
181
+ "--title",
182
+ f"Survivor {record.mutant_id}",
183
+ "--body",
184
+ json.dumps(asdict(record)),
185
+ ],
186
+ check=False,
187
+ stdout=subprocess.DEVNULL,
188
+ stderr=subprocess.DEVNULL,
189
+ )
190
+ except Exception:
191
+ pass
192
+
193
+ def run(self) -> Dict[str, object]:
194
+ # 1. Pre-flight check: tests must pass on the clean base code
195
+ if not self._run_test_suite():
196
+ raise RuntimeError("The test suite is already failing on unmutated base code.")
197
+
198
+ total_points = self._count_mutation_points()
199
+ survivors: List[MutationRecord] = []
200
+
201
+ try:
202
+ for idx in range(total_points):
203
+ mutator = DeterministicOperatorMutator(target_index=idx)
204
+ tree = ast.parse(self.original_source)
205
+ mutated_tree = mutator.visit(tree)
206
+ ast.fix_missing_locations(mutated_tree)
207
+
208
+ mutated_source = ast.unparse(mutated_tree)
209
+ diff = self._create_diff(mutated_source)
210
+
211
+ # Apply mutant to disk
212
+ self.target_file.write_text(mutated_source, encoding="utf-8")
213
+
214
+ # Run tests against the mutant
215
+ passed = self._run_test_suite()
216
+
217
+ if passed:
218
+ # The mutant survived: tests are blind to this change
219
+ lineno, orig, mut = mutator.applied_mutation or (0, "Unknown", "Unknown")
220
+ survivor = MutationRecord(
221
+ mutant_id=f"MUT_{idx:03d}_L{lineno}",
222
+ target_file=str(self.target_file),
223
+ line_number=lineno,
224
+ original_op=orig,
225
+ mutated_op=mut,
226
+ diff=diff,
227
+ survived=True,
228
+ details="Tests passed with inverted comparison logic. Missing explicit assert.",
229
+ )
230
+ survivors.append(survivor)
231
+
232
+ # Safe Fail-Fast protocol: immediate handoff to the craftsman
233
+ self._persist_to_engram_or_markdown(survivor)
234
+ return {
235
+ "status": "HANDS_OFF_TRIGGERED",
236
+ "target_agent": "tdd_craftsman",
237
+ "surviving_mutant": asdict(survivor),
238
+ }
239
+
240
+ finally:
241
+ # Unconditional deterministic rollback: restore original source
242
+ self.target_file.write_text(self.original_source, encoding="utf-8")
243
+
244
+ return {
245
+ "status": "PASS",
246
+ "total_mutants_killed": total_points,
247
+ "survivors_count": 0,
248
+ }
249
+
250
+
251
+ def main(argv: Optional[List[str]] = None) -> int:
252
+ parser = argparse.ArgumentParser(description="Deterministic stdlib mutation runner.")
253
+ parser.add_argument("--target", required=True, help="Python production file to mutate.")
254
+ parser.add_argument("--test-command", required=True, help="Shell command that runs the test suite.")
255
+ parser.add_argument("--spec-folder", default="specs", help="Folder for handoff artifacts.")
256
+ args = parser.parse_args(argv)
257
+
258
+ engine = MutationEngine(
259
+ target_file=args.target,
260
+ test_command=args.test_command,
261
+ spec_folder=args.spec_folder,
262
+ )
263
+ outcome = engine.run()
264
+ print(json.dumps(outcome, indent=2))
265
+
266
+ if outcome["status"] == "HANDS_OFF_TRIGGERED":
267
+ # Exit code 2 tells the orchestrator (craftsman_lead) to reroute to tdd_craftsman
268
+ return 2
269
+ return 0
270
+
271
+
272
+ if __name__ == "__main__":
273
+ sys.exit(main())
@@ -1,3 +1,14 @@
1
+ # Single source of truth for the council roster (loaded by
2
+ # src/core/presets/preset-loader.ts -> loadCouncilPreset, consumed by
3
+ # `cc install council --target <t>` in src/commands/install.command.ts).
4
+ # Per-role checklist and finding-format content lives in
5
+ # src/domain/council/council-agent.ts (generateAgentContent /
6
+ # checklistFor), shared by every generator except Codex, which renders
7
+ # its own TOML shape in src/adapters/codex/codex-council-generator.ts.
8
+ # Adding or renaming an agent here requires a matching entry in
9
+ # ROLE_PROFILES (council-agent.ts) and, if it changes the roster's ids,
10
+ # updating DEFAULT_COUNCIL_AGENTS in src/domain/council/council-spec.ts —
11
+ # test/unit/domain/council/council-spec.test.ts asserts the two stay in sync.
1
12
  name: council
2
13
  version: 0.1.0
3
14
  description: Multi-agent council for code review and architecture decisions
@@ -13,15 +24,6 @@ agents:
13
24
  - design-patterns
14
25
  - code-structure
15
26
 
16
- - id: security
17
- role: Security
18
- context: repo-readonly
19
- modelHint: security-reasoning
20
- focus:
21
- - security
22
- - vulnerabilities
23
- - compliance
24
-
25
27
  - id: product
26
28
  role: Product
27
29
  context: prompt-only
@@ -56,6 +58,7 @@ agents:
56
58
  focus:
57
59
  - security
58
60
  - vulnerabilities
61
+ - compliance
59
62
  - credentials
60
63
  - injection
61
64
  - auth
@@ -13,18 +13,20 @@ entries:
13
13
  strategy: overwrite
14
14
  template: true
15
15
  - src: agy/settings.json
16
- dest: .agents/../antigravity-cli/settings.json
16
+ dest: antigravity-cli/settings.json
17
17
  strategy: skip
18
18
  globalStrategy: merge-json
19
19
  - src: agy/hooks.json
20
20
  dest: .agents/hooks.json
21
21
  strategy: overwrite
22
+ globalStrategy: skip
22
23
  - src: agy/mcp_config.json
23
24
  dest: .agents/mcp_config.json
24
25
  strategy: overwrite
25
26
  - src: agy/scripts
26
27
  dest: .agents/scripts
27
28
  strategy: overwrite
29
+ globalStrategy: skip
28
30
  - src: opencode/skills
29
31
  dest: .agents/skills
30
32
  strategy: overwrite
@@ -9,6 +9,9 @@ entries:
9
9
  dest: .claude/settings.json
10
10
  strategy: overwrite
11
11
  globalStrategy: merge-json
12
+ - src: shared/invoke-hook.cjs
13
+ dest: .claude/hooks/invoke-hook.cjs
14
+ strategy: overwrite
12
15
  - src: claude/claude.json
13
16
  dest: .claude.json
14
17
  strategy: merge-json
@@ -1,5 +1,14 @@
1
1
  target: gemini
2
2
  entries:
3
+ - src: gemini/GEMINI.md
4
+ dest: GEMINI.md
5
+ strategy: merge-managed
6
+ globalStrategy: merge-managed
7
+ template: true
8
+ - src: gemini/settings.json
9
+ dest: .gemini/settings.json
10
+ strategy: overwrite
11
+ globalStrategy: merge-json
3
12
  - src: opencode/agents
4
13
  dest: .gemini/agents
5
14
  strategy: overwrite
@@ -8,3 +17,9 @@ entries:
8
17
  dest: .gemini/prompts/v1.0.0
9
18
  strategy: overwrite
10
19
  template: true
20
+ - src: gemini/commands
21
+ dest: .gemini/commands
22
+ strategy: overwrite
23
+ - src: opencode/skills
24
+ dest: .gemini/skills
25
+ strategy: overwrite
@@ -0,0 +1,25 @@
1
+ target: pi
2
+ entries:
3
+ - src: pi/AGENTS.md
4
+ dest: AGENTS.md
5
+ strategy: merge-managed
6
+ globalStrategy: merge-managed
7
+ template: true
8
+ - src: pi/settings.json
9
+ dest: .pi/settings.json
10
+ strategy: overwrite
11
+ globalStrategy: merge-json
12
+ - src: opencode/commands
13
+ dest: .pi/prompts
14
+ strategy: overwrite
15
+ - src: opencode/skills
16
+ dest: .agents/skills
17
+ strategy: overwrite
18
+ - src: opencode/agents
19
+ dest: .agents/agents
20
+ strategy: overwrite
21
+ template: true
22
+ - src: opencode/prompts/v1.0.0
23
+ dest: .agents/prompts/v1.0.0
24
+ strategy: overwrite
25
+ template: true