@planu/cli 0.72.0 → 0.74.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 (267) hide show
  1. package/README.md +1 -1
  2. package/dist/config/license-plans.json +9 -2
  3. package/dist/config/tool-groups.json +5 -1
  4. package/dist/engine/actuals/git-analyzer.js +1 -1
  5. package/dist/engine/actuals/git-analyzer.js.map +1 -1
  6. package/dist/engine/agent-prompt-generator.d.ts +12 -0
  7. package/dist/engine/agent-prompt-generator.d.ts.map +1 -0
  8. package/dist/engine/agent-prompt-generator.js +171 -0
  9. package/dist/engine/agent-prompt-generator.js.map +1 -0
  10. package/dist/engine/ai-tool-detector/index.d.ts +6 -0
  11. package/dist/engine/ai-tool-detector/index.d.ts.map +1 -0
  12. package/dist/engine/ai-tool-detector/index.js +95 -0
  13. package/dist/engine/ai-tool-detector/index.js.map +1 -0
  14. package/dist/engine/ci-generator/planu-steps.d.ts.map +1 -1
  15. package/dist/engine/ci-generator/planu-steps.js +10 -11
  16. package/dist/engine/ci-generator/planu-steps.js.map +1 -1
  17. package/dist/engine/convention-scanner/codebase-scanner.d.ts +7 -0
  18. package/dist/engine/convention-scanner/codebase-scanner.d.ts.map +1 -0
  19. package/dist/engine/convention-scanner/codebase-scanner.js +258 -0
  20. package/dist/engine/convention-scanner/codebase-scanner.js.map +1 -0
  21. package/dist/engine/convention-scanner/convention-parser.d.ts +7 -0
  22. package/dist/engine/convention-scanner/convention-parser.d.ts.map +1 -0
  23. package/dist/engine/convention-scanner/convention-parser.js +195 -0
  24. package/dist/engine/convention-scanner/convention-parser.js.map +1 -0
  25. package/dist/engine/convention-scanner/index.d.ts +3 -0
  26. package/dist/engine/convention-scanner/index.d.ts.map +1 -0
  27. package/dist/engine/convention-scanner/index.js +5 -0
  28. package/dist/engine/convention-scanner/index.js.map +1 -0
  29. package/dist/engine/convention-sync.d.ts +9 -0
  30. package/dist/engine/convention-sync.d.ts.map +1 -0
  31. package/dist/engine/convention-sync.js +156 -0
  32. package/dist/engine/convention-sync.js.map +1 -0
  33. package/dist/engine/doc-generator/portal/portal-regenerator.d.ts +2 -1
  34. package/dist/engine/doc-generator/portal/portal-regenerator.d.ts.map +1 -1
  35. package/dist/engine/doc-generator/portal/portal-regenerator.js +23 -15
  36. package/dist/engine/doc-generator/portal/portal-regenerator.js.map +1 -1
  37. package/dist/engine/feedback/triage.d.ts +16 -0
  38. package/dist/engine/feedback/triage.d.ts.map +1 -0
  39. package/dist/engine/feedback/triage.js +165 -0
  40. package/dist/engine/feedback/triage.js.map +1 -0
  41. package/dist/engine/hooks-reconciler.d.ts +7 -0
  42. package/dist/engine/hooks-reconciler.d.ts.map +1 -0
  43. package/dist/engine/hooks-reconciler.js +214 -0
  44. package/dist/engine/hooks-reconciler.js.map +1 -0
  45. package/dist/engine/platform-registry.d.ts +17 -0
  46. package/dist/engine/platform-registry.d.ts.map +1 -0
  47. package/dist/engine/platform-registry.js +78 -0
  48. package/dist/engine/platform-registry.js.map +1 -0
  49. package/dist/engine/project-health-checker.d.ts +4 -2
  50. package/dist/engine/project-health-checker.d.ts.map +1 -1
  51. package/dist/engine/project-health-checker.js +96 -7
  52. package/dist/engine/project-health-checker.js.map +1 -1
  53. package/dist/engine/rules-generator/index.d.ts +14 -0
  54. package/dist/engine/rules-generator/index.d.ts.map +1 -0
  55. package/dist/engine/rules-generator/index.js +313 -0
  56. package/dist/engine/rules-generator/index.js.map +1 -0
  57. package/dist/engine/rules-reconciler.d.ts +13 -0
  58. package/dist/engine/rules-reconciler.d.ts.map +1 -0
  59. package/dist/engine/rules-reconciler.js +193 -0
  60. package/dist/engine/rules-reconciler.js.map +1 -0
  61. package/dist/engine/skill-generator/detect.d.ts +1 -0
  62. package/dist/engine/skill-generator/detect.d.ts.map +1 -1
  63. package/dist/engine/skill-generator/detect.js +13 -5
  64. package/dist/engine/skill-generator/detect.js.map +1 -1
  65. package/dist/engine/skills/skills-fetcher.d.ts +4 -0
  66. package/dist/engine/skills/skills-fetcher.d.ts.map +1 -0
  67. package/dist/engine/skills/skills-fetcher.js +102 -0
  68. package/dist/engine/skills/skills-fetcher.js.map +1 -0
  69. package/dist/engine/skills-reconciler.d.ts +15 -0
  70. package/dist/engine/skills-reconciler.d.ts.map +1 -0
  71. package/dist/engine/skills-reconciler.js +98 -0
  72. package/dist/engine/skills-reconciler.js.map +1 -0
  73. package/dist/engine/spec-template-cleaner.d.ts +12 -0
  74. package/dist/engine/spec-template-cleaner.d.ts.map +1 -0
  75. package/dist/engine/spec-template-cleaner.js +119 -0
  76. package/dist/engine/spec-template-cleaner.js.map +1 -0
  77. package/dist/engine/validator/analyzer.d.ts +4 -2
  78. package/dist/engine/validator/analyzer.d.ts.map +1 -1
  79. package/dist/engine/validator/analyzer.js +5 -2
  80. package/dist/engine/validator/analyzer.js.map +1 -1
  81. package/dist/engine/validator/deep-code-checker.d.ts +4 -2
  82. package/dist/engine/validator/deep-code-checker.d.ts.map +1 -1
  83. package/dist/engine/validator/deep-code-checker.js +44 -1
  84. package/dist/engine/validator/deep-code-checker.js.map +1 -1
  85. package/dist/engine/validator/extractors.d.ts +8 -1
  86. package/dist/engine/validator/extractors.d.ts.map +1 -1
  87. package/dist/engine/validator/extractors.js +33 -0
  88. package/dist/engine/validator/extractors.js.map +1 -1
  89. package/dist/engine/validator.d.ts.map +1 -1
  90. package/dist/engine/validator.js +13 -2
  91. package/dist/engine/validator.js.map +1 -1
  92. package/dist/engine/workers/schema.d.ts +58 -0
  93. package/dist/engine/workers/schema.d.ts.map +1 -0
  94. package/dist/engine/workers/schema.js +41 -0
  95. package/dist/engine/workers/schema.js.map +1 -0
  96. package/dist/engine/workers/worker-engine.js +1 -1
  97. package/dist/engine/workers/worker-engine.js.map +1 -1
  98. package/dist/index.js +10 -0
  99. package/dist/index.js.map +1 -1
  100. package/dist/storage/convention-baseline.d.ts +20 -0
  101. package/dist/storage/convention-baseline.d.ts.map +1 -0
  102. package/dist/storage/convention-baseline.js +57 -0
  103. package/dist/storage/convention-baseline.js.map +1 -0
  104. package/dist/storage/feedback-remote.d.ts +8 -0
  105. package/dist/storage/feedback-remote.d.ts.map +1 -0
  106. package/dist/storage/feedback-remote.js +27 -0
  107. package/dist/storage/feedback-remote.js.map +1 -0
  108. package/dist/storage/feedback-store.d.ts +27 -0
  109. package/dist/storage/feedback-store.d.ts.map +1 -0
  110. package/dist/storage/feedback-store.js +272 -0
  111. package/dist/storage/feedback-store.js.map +1 -0
  112. package/dist/storage/index.d.ts +1 -0
  113. package/dist/storage/index.d.ts.map +1 -1
  114. package/dist/storage/index.js +1 -0
  115. package/dist/storage/index.js.map +1 -1
  116. package/dist/tools/convention-sync.d.ts +8 -0
  117. package/dist/tools/convention-sync.d.ts.map +1 -0
  118. package/dist/tools/convention-sync.js +77 -0
  119. package/dist/tools/convention-sync.js.map +1 -0
  120. package/dist/tools/create-spec/post-creation.js +1 -1
  121. package/dist/tools/create-spec/post-creation.js.map +1 -1
  122. package/dist/tools/create-spec-hu/ac-adapters/convention-adapter.d.ts +9 -0
  123. package/dist/tools/create-spec-hu/ac-adapters/convention-adapter.d.ts.map +1 -0
  124. package/dist/tools/create-spec-hu/ac-adapters/convention-adapter.js +68 -0
  125. package/dist/tools/create-spec-hu/ac-adapters/convention-adapter.js.map +1 -0
  126. package/dist/tools/create-spec-hu/ac-adapters/custom-template-adapter.d.ts +14 -0
  127. package/dist/tools/create-spec-hu/ac-adapters/custom-template-adapter.d.ts.map +1 -0
  128. package/dist/tools/create-spec-hu/ac-adapters/custom-template-adapter.js +60 -0
  129. package/dist/tools/create-spec-hu/ac-adapters/custom-template-adapter.js.map +1 -0
  130. package/dist/tools/create-spec-hu/ac-adapters/index.d.ts +4 -0
  131. package/dist/tools/create-spec-hu/ac-adapters/index.d.ts.map +1 -1
  132. package/dist/tools/create-spec-hu/ac-adapters/index.js +9 -1
  133. package/dist/tools/create-spec-hu/ac-adapters/index.js.map +1 -1
  134. package/dist/tools/create-spec-hu/serverless-hu-adapter.d.ts +8 -0
  135. package/dist/tools/create-spec-hu/serverless-hu-adapter.d.ts.map +1 -0
  136. package/dist/tools/create-spec-hu/serverless-hu-adapter.js +46 -0
  137. package/dist/tools/create-spec-hu/serverless-hu-adapter.js.map +1 -0
  138. package/dist/tools/create-spec-hu.d.ts.map +1 -1
  139. package/dist/tools/create-spec-hu.js +4 -0
  140. package/dist/tools/create-spec-hu.js.map +1 -1
  141. package/dist/tools/create-spec.d.ts.map +1 -1
  142. package/dist/tools/create-spec.js +3 -2
  143. package/dist/tools/create-spec.js.map +1 -1
  144. package/dist/tools/delete-decision.d.ts.map +1 -1
  145. package/dist/tools/delete-decision.js +2 -0
  146. package/dist/tools/delete-decision.js.map +1 -1
  147. package/dist/tools/delete-project.d.ts.map +1 -1
  148. package/dist/tools/delete-project.js +11 -14
  149. package/dist/tools/delete-project.js.map +1 -1
  150. package/dist/tools/delete-spec.d.ts.map +1 -1
  151. package/dist/tools/delete-spec.js +11 -9
  152. package/dist/tools/delete-spec.js.map +1 -1
  153. package/dist/tools/estimate.d.ts.map +1 -1
  154. package/dist/tools/estimate.js +6 -5
  155. package/dist/tools/estimate.js.map +1 -1
  156. package/dist/tools/export-session.d.ts.map +1 -1
  157. package/dist/tools/export-session.js +13 -10
  158. package/dist/tools/export-session.js.map +1 -1
  159. package/dist/tools/feedback-handler.d.ts +5 -0
  160. package/dist/tools/feedback-handler.d.ts.map +1 -0
  161. package/dist/tools/feedback-handler.js +106 -0
  162. package/dist/tools/feedback-handler.js.map +1 -0
  163. package/dist/tools/generate-teammate-prompt.d.ts +8 -0
  164. package/dist/tools/generate-teammate-prompt.d.ts.map +1 -1
  165. package/dist/tools/generate-teammate-prompt.js +33 -0
  166. package/dist/tools/generate-teammate-prompt.js.map +1 -1
  167. package/dist/tools/init-project/handler.d.ts.map +1 -1
  168. package/dist/tools/init-project/handler.js +42 -7
  169. package/dist/tools/init-project/handler.js.map +1 -1
  170. package/dist/tools/init-project/helpers.d.ts.map +1 -1
  171. package/dist/tools/init-project/helpers.js +1 -2
  172. package/dist/tools/init-project/helpers.js.map +1 -1
  173. package/dist/tools/init-project/result-builder.d.ts.map +1 -1
  174. package/dist/tools/init-project/result-builder.js +12 -1
  175. package/dist/tools/init-project/result-builder.js.map +1 -1
  176. package/dist/tools/log-decision.d.ts.map +1 -1
  177. package/dist/tools/log-decision.js +15 -4
  178. package/dist/tools/log-decision.js.map +1 -1
  179. package/dist/tools/manage-trash.d.ts.map +1 -1
  180. package/dist/tools/manage-trash.js +13 -27
  181. package/dist/tools/manage-trash.js.map +1 -1
  182. package/dist/tools/reconcile-hooks.d.ts +7 -0
  183. package/dist/tools/reconcile-hooks.d.ts.map +1 -0
  184. package/dist/tools/reconcile-hooks.js +78 -0
  185. package/dist/tools/reconcile-hooks.js.map +1 -0
  186. package/dist/tools/reconcile-rules.d.ts +7 -0
  187. package/dist/tools/reconcile-rules.d.ts.map +1 -0
  188. package/dist/tools/reconcile-rules.js +86 -0
  189. package/dist/tools/reconcile-rules.js.map +1 -0
  190. package/dist/tools/reconcile-skills.d.ts +8 -0
  191. package/dist/tools/reconcile-skills.d.ts.map +1 -0
  192. package/dist/tools/reconcile-skills.js +70 -0
  193. package/dist/tools/reconcile-skills.js.map +1 -0
  194. package/dist/tools/register-feedback-tools.d.ts +3 -0
  195. package/dist/tools/register-feedback-tools.d.ts.map +1 -0
  196. package/dist/tools/register-feedback-tools.js +65 -0
  197. package/dist/tools/register-feedback-tools.js.map +1 -0
  198. package/dist/tools/register-spec-tools/core-spec-tools.d.ts.map +1 -1
  199. package/dist/tools/register-spec-tools/core-spec-tools.js +10 -4
  200. package/dist/tools/register-spec-tools/core-spec-tools.js.map +1 -1
  201. package/dist/tools/register-team-tools.d.ts.map +1 -1
  202. package/dist/tools/register-team-tools.js +35 -8
  203. package/dist/tools/register-team-tools.js.map +1 -1
  204. package/dist/tools/safe-handler.d.ts.map +1 -1
  205. package/dist/tools/safe-handler.js +20 -2
  206. package/dist/tools/safe-handler.js.map +1 -1
  207. package/dist/tools/schemas/index.d.ts +1 -0
  208. package/dist/tools/schemas/index.d.ts.map +1 -1
  209. package/dist/tools/schemas/index.js +1 -0
  210. package/dist/tools/schemas/index.js.map +1 -1
  211. package/dist/tools/schemas/reconcile-skills-schemas.d.ts +7 -0
  212. package/dist/tools/schemas/reconcile-skills-schemas.d.ts.map +1 -0
  213. package/dist/tools/schemas/reconcile-skills-schemas.js +18 -0
  214. package/dist/tools/schemas/reconcile-skills-schemas.js.map +1 -0
  215. package/dist/tools/schemas/workers-schema.d.ts +1 -56
  216. package/dist/tools/schemas/workers-schema.d.ts.map +1 -1
  217. package/dist/tools/schemas/workers-schema.js +6 -42
  218. package/dist/tools/schemas/workers-schema.js.map +1 -1
  219. package/dist/tools/skill-registry/search.d.ts.map +1 -1
  220. package/dist/tools/skill-registry/search.js +29 -3
  221. package/dist/tools/skill-registry/search.js.map +1 -1
  222. package/dist/tools/suggest-tooling/skills-fetcher.d.ts +1 -3
  223. package/dist/tools/suggest-tooling/skills-fetcher.d.ts.map +1 -1
  224. package/dist/tools/suggest-tooling/skills-fetcher.js +3 -101
  225. package/dist/tools/suggest-tooling/skills-fetcher.js.map +1 -1
  226. package/dist/tools/token-recording.d.ts +16 -0
  227. package/dist/tools/token-recording.d.ts.map +1 -0
  228. package/dist/tools/token-recording.js +47 -0
  229. package/dist/tools/token-recording.js.map +1 -0
  230. package/dist/tools/update-status-actions.d.ts.map +1 -1
  231. package/dist/tools/update-status-actions.js +1 -2
  232. package/dist/tools/update-status-actions.js.map +1 -1
  233. package/dist/tools/update-status-convention-gate.d.ts +12 -0
  234. package/dist/tools/update-status-convention-gate.d.ts.map +1 -0
  235. package/dist/tools/update-status-convention-gate.js +159 -0
  236. package/dist/tools/update-status-convention-gate.js.map +1 -0
  237. package/dist/tools/update-status-reconcile.d.ts +7 -0
  238. package/dist/tools/update-status-reconcile.d.ts.map +1 -0
  239. package/dist/tools/update-status-reconcile.js +47 -0
  240. package/dist/tools/update-status-reconcile.js.map +1 -0
  241. package/dist/tools/update-status.d.ts.map +1 -1
  242. package/dist/tools/update-status.js +113 -67
  243. package/dist/tools/update-status.js.map +1 -1
  244. package/dist/tools/validate.d.ts.map +1 -1
  245. package/dist/tools/validate.js +93 -3
  246. package/dist/tools/validate.js.map +1 -1
  247. package/dist/types/ai-tool-rules.d.ts +42 -0
  248. package/dist/types/ai-tool-rules.d.ts.map +1 -0
  249. package/dist/types/ai-tool-rules.js +3 -0
  250. package/dist/types/ai-tool-rules.js.map +1 -0
  251. package/dist/types/conventions.d.ts +155 -0
  252. package/dist/types/conventions.d.ts.map +1 -0
  253. package/dist/types/conventions.js +3 -0
  254. package/dist/types/conventions.js.map +1 -0
  255. package/dist/types/feedback.d.ts +76 -0
  256. package/dist/types/feedback.d.ts.map +1 -0
  257. package/dist/types/feedback.js +3 -0
  258. package/dist/types/feedback.js.map +1 -0
  259. package/dist/types/index.d.ts +3 -0
  260. package/dist/types/index.d.ts.map +1 -1
  261. package/dist/types/index.js +1 -0
  262. package/dist/types/index.js.map +1 -1
  263. package/dist/types/project/planu-config.d.ts +4 -0
  264. package/dist/types/project/planu-config.d.ts.map +1 -1
  265. package/package.json +1 -1
  266. package/src/config/license-plans.json +9 -2
  267. package/src/config/tool-groups.json +5 -1
@@ -1,5 +1,6 @@
1
1
  // tools/validate.ts — Compare spec vs implementation
2
2
  // Uses the validator engine to check coverage, missing items, quality issues.
3
+ import { execSync } from 'node:child_process';
3
4
  import { specStore, knowledgeStore } from '../storage/index.js';
4
5
  import { validateSpec, generateDoR, generateDoD } from '../engine/validator.js';
5
6
  import { calcQualityScore } from '../engine/auditor-scoring.js';
@@ -7,6 +8,8 @@ import { dispatchFeedbackEvent } from './learn.js';
7
8
  import { t, ti } from '../i18n/index.js';
8
9
  import { createBasicPhaseEvent } from '../engine/phase-tracker.js';
9
10
  import { validateContractCompliance } from '../engine/test-scaffold-generator.js';
11
+ import { parseConventions, scanConventions } from '../engine/convention-scanner/index.js';
12
+ import { compareWithBaseline } from '../storage/convention-baseline.js';
10
13
  // Re-export for external use (SPEC-018)
11
14
  export { validateContractCompliance };
12
15
  export async function handleValidate(args) {
@@ -36,7 +39,34 @@ export async function handleValidate(args) {
36
39
  // 5. Compute implementation quality score from validated files (SPEC-010 S47)
37
40
  const implementationQualityScore = calcQualityScore(result.qualityIssues);
38
41
  const auditedFiles = [...new Set(result.qualityIssues.map((i) => i.file))];
39
- // 6. Build output
42
+ // 6. SPEC-190: Convention compliance check
43
+ let conventionViolations = [];
44
+ let regressionDetected = false;
45
+ try {
46
+ const rules = parseConventions(projectPath);
47
+ if (rules.length > 0) {
48
+ conventionViolations = scanConventions(projectPath, rules);
49
+ // Check regression against baseline
50
+ const comparison = await compareWithBaseline(projectId, {
51
+ rules,
52
+ violations: conventionViolations,
53
+ summary: {
54
+ totalRules: rules.length,
55
+ totalViolations: conventionViolations.length,
56
+ bySeverity: {},
57
+ byCategory: {},
58
+ },
59
+ scannedAt: new Date().toISOString(),
60
+ });
61
+ regressionDetected = comparison.regressionDetected;
62
+ }
63
+ }
64
+ catch {
65
+ /* best-effort — don't fail validation */
66
+ }
67
+ // 7. Lint check (best-effort — non-blocking)
68
+ const lintCheck = runLintCheck(projectPath, knowledge.lintCommand ?? null);
69
+ // 8. Build output
40
70
  const output = {
41
71
  specId,
42
72
  title: spec.title,
@@ -90,6 +120,18 @@ export async function handleValidate(args) {
90
120
  status: item.status,
91
121
  })),
92
122
  },
123
+ conventionCompliance: {
124
+ totalViolations: conventionViolations.length,
125
+ regressionDetected,
126
+ violations: conventionViolations.slice(0, 20).map((v) => ({
127
+ category: v.category,
128
+ file: v.file,
129
+ line: v.line,
130
+ message: v.message,
131
+ severity: v.severity,
132
+ })),
133
+ },
134
+ lintCheck,
93
135
  };
94
136
  // Auto-suggest corrective actions based on validation results
95
137
  const suggestions = [];
@@ -108,6 +150,15 @@ export async function handleValidate(args) {
108
150
  if (result.missing.length > 0) {
109
151
  suggestions.push(`${result.missing.length} criteria still missing. Run detect_drift to identify gaps.`);
110
152
  }
153
+ if (conventionViolations.length > 0) {
154
+ suggestions.push(`${conventionViolations.length} convention violation(s) detected. Fix before marking as done.`);
155
+ }
156
+ if (regressionDetected) {
157
+ suggestions.push('Quality regression detected: more violations than baseline. New code introduced convention violations.');
158
+ }
159
+ if (!lintCheck.passed) {
160
+ suggestions.push(`Lint check failed: ${lintCheck.issueCount} issue(s) found via \`${lintCheck.command}\`. Fix before marking as done.`);
161
+ }
111
162
  const outputWithSuggestions = {
112
163
  ...output,
113
164
  suggestions: suggestions.length > 0 ? suggestions : undefined,
@@ -140,7 +191,7 @@ export async function handleValidate(args) {
140
191
  });
141
192
  }
142
193
  const commitReminder = result.score >= 80
143
- ? `\n\n> 💡 **Save progress**: Consider committing your changes: \`git add -A && git commit -m "feat(${specId}): ${spec.title}"\``
194
+ ? `\n\n> 💡 Good score! Remember to save progress with git: \`git add planu/ && git commit -m "chore: ${specId} progress checkpoint"\``
144
195
  : '';
145
196
  return {
146
197
  phaseEvent: createBasicPhaseEvent('validate', 'completed', 100, 'validating'),
@@ -149,12 +200,51 @@ export async function handleValidate(args) {
149
200
  type: 'text',
150
201
  text: ti('tools.validate.success', { score: String(result.score) }) + commitReminder,
151
202
  },
152
- { type: 'text', text: JSON.stringify(outputWithSuggestions, null, 2) },
153
203
  ],
154
204
  // structuredContent requires Record<string,unknown>; outputWithSuggestions is a typed JSON-serializable object.
155
205
  structuredContent: outputWithSuggestions,
156
206
  };
157
207
  }
208
+ /** Allowlist: alphanumerics, spaces, and safe shell chars. Rejects ; | $ ` & < > */
209
+ const SAFE_COMMAND_RE = /^[\w\s./:@~=-]+$/;
210
+ function isSafeCommand(cmd) {
211
+ return SAFE_COMMAND_RE.test(cmd);
212
+ }
213
+ function runLintCheck(projectPath, lintCommand) {
214
+ if (lintCommand !== null && !isSafeCommand(lintCommand)) {
215
+ console.warn(`[Planu] validate: lintCommand contains unsafe characters — skipping execution`);
216
+ return {
217
+ passed: true,
218
+ command: lintCommand,
219
+ issueCount: 0,
220
+ output: '(skipped — unsafe command)',
221
+ };
222
+ }
223
+ const command = lintCommand ?? 'npx eslint src --max-warnings=0 --format=compact 2>&1 || true';
224
+ try {
225
+ execSync(command, {
226
+ cwd: projectPath,
227
+ stdio: ['pipe', 'pipe', 'pipe'],
228
+ timeout: 10_000,
229
+ });
230
+ return { passed: true, command, issueCount: 0, output: '' };
231
+ }
232
+ catch (err) {
233
+ const raw = err instanceof Error && 'stdout' in err
234
+ ? String(err.stdout ?? '')
235
+ : String(err);
236
+ const output = raw.trim();
237
+ const issueCount = parseLintIssueCount(output);
238
+ return { passed: false, command, issueCount, output: output.slice(0, 500) };
239
+ }
240
+ }
241
+ function parseLintIssueCount(output) {
242
+ const m = /(\d+)\s+problem/i.exec(output);
243
+ if (m) {
244
+ return parseInt(m[1] ?? '0', 10);
245
+ }
246
+ return output.split('\n').filter((l) => l.trim().length > 0).length;
247
+ }
158
248
  function scoreToGrade(score) {
159
249
  if (score >= 90) {
160
250
  return 'A';
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/tools/validate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/tools/validate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ export type AiToolId = 'claude' | 'cursor' | 'copilot' | 'windsurf' | 'aider';
2
+ export interface AiToolDetection {
3
+ toolId: AiToolId;
4
+ name: string;
5
+ /** Path that was detected (e.g. ".claude/") */
6
+ configPath: string;
7
+ rulesFormat: 'markdown' | 'yaml' | 'json';
8
+ /** Where to write rules (e.g. ".claude/rules/") */
9
+ rulesPath: string;
10
+ supportsSkills: boolean;
11
+ }
12
+ export interface ArchitectureLayer {
13
+ name: string;
14
+ path: string;
15
+ responsibility: string;
16
+ }
17
+ export interface ArchitectureRule {
18
+ title: string;
19
+ description: string;
20
+ layers: ArchitectureLayer[];
21
+ conventions: string[];
22
+ maxLinesPerHandler: number;
23
+ }
24
+ export interface GeneratedAiToolRules {
25
+ tool: AiToolDetection;
26
+ /** Full markdown/yaml content to write */
27
+ content: string;
28
+ /** Absolute path to write to */
29
+ filePath: string;
30
+ /** True if file already exists (skip writing) */
31
+ alreadyExists: boolean;
32
+ }
33
+ export interface AiToolConfig {
34
+ id: AiToolId;
35
+ name: string;
36
+ markers: string[];
37
+ configPath: string;
38
+ rulesPath: string;
39
+ rulesFormat: 'markdown' | 'yaml' | 'json';
40
+ supportsSkills: boolean;
41
+ }
42
+ //# sourceMappingURL=ai-tool-rules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-tool-rules.d.ts","sourceRoot":"","sources":["../../src/types/ai-tool-rules.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC;AAE9E,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,QAAQ,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;IAC1C,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,eAAe,CAAC;IACtB,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,QAAQ,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;IAC1C,cAAc,EAAE,OAAO,CAAC;CACzB"}
@@ -0,0 +1,3 @@
1
+ // Planu — AI tool detection and architecture rules generation types
2
+ export {};
3
+ //# sourceMappingURL=ai-tool-rules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-tool-rules.js","sourceRoot":"","sources":["../../src/types/ai-tool-rules.ts"],"names":[],"mappings":"AAAA,oEAAoE"}
@@ -0,0 +1,155 @@
1
+ export interface ConventionRule {
2
+ id: string;
3
+ category: 'naming' | 'i18n' | 'architecture' | 'file-limits' | 'code-quality' | 'testing' | 'custom';
4
+ description: string;
5
+ severity: 'critical' | 'warning' | 'info';
6
+ source: 'claude-md' | 'rules-file';
7
+ sourceFile: string;
8
+ pattern?: RegExp;
9
+ }
10
+ export interface ConventionViolation {
11
+ ruleId: string;
12
+ category: ConventionRule['category'];
13
+ severity: ConventionRule['severity'];
14
+ file: string;
15
+ line?: number;
16
+ message: string;
17
+ suggestion?: string;
18
+ }
19
+ export interface ConventionScanResult {
20
+ rules: ConventionRule[];
21
+ violations: ConventionViolation[];
22
+ summary: {
23
+ totalRules: number;
24
+ totalViolations: number;
25
+ bySeverity: Record<string, number>;
26
+ byCategory: Record<string, number>;
27
+ };
28
+ scannedAt: string;
29
+ }
30
+ export interface ConventionBaseline {
31
+ projectId: string;
32
+ snapshot: ConventionScanResult;
33
+ createdAt: string;
34
+ updatedAt: string;
35
+ }
36
+ export interface GrepMatch {
37
+ file: string;
38
+ lineNum: number;
39
+ code: string;
40
+ }
41
+ export interface RulesReconciliation {
42
+ rulesInSync: boolean;
43
+ newRulesNeeded: string[];
44
+ staleRules: string[];
45
+ updatedRules: string[];
46
+ healthScore: number;
47
+ }
48
+ export interface SkillsReconciliation {
49
+ skillsInSync: boolean;
50
+ newSkillsDetected: string[];
51
+ staleSkills: string[];
52
+ updatedSkills: string[];
53
+ healthScore: number;
54
+ }
55
+ export interface ComplianceGateResult {
56
+ conventionWarnings: string[];
57
+ constitutionWarnings: {
58
+ description: string;
59
+ }[];
60
+ lintWarnings: string[];
61
+ testWarnings: string[];
62
+ compileWarnings: string[];
63
+ }
64
+ export interface BaselineComparison {
65
+ /** Violations present in the current scan but absent from the baseline */
66
+ newViolations: ConventionViolation[];
67
+ /** Violations present in the baseline but absent from the current scan (fixed) */
68
+ fixedViolations: ConventionViolation[];
69
+ /**
70
+ * Net change in total violations.
71
+ * Positive = regression (more violations than baseline).
72
+ * Negative = improvement (fewer violations than baseline).
73
+ */
74
+ totalDelta: number;
75
+ /** True when the current scan has more violations than the baseline */
76
+ regressionDetected: boolean;
77
+ }
78
+ export interface HooksReconciliation {
79
+ hooksInSync: boolean;
80
+ /** Expected checks not present in existing hook scripts (e.g., pre-commit missing typecheck) */
81
+ missingHooks: string[];
82
+ /** Hooks that could be enhanced based on detected project capabilities */
83
+ outdatedHooks: string[];
84
+ healthScore: number;
85
+ }
86
+ export interface ProjectCapabilities {
87
+ hasTypeScript: boolean;
88
+ hasEsLint: boolean;
89
+ hasTestRunner: boolean;
90
+ hasCommitlint: boolean;
91
+ hasPrettier: boolean;
92
+ }
93
+ export interface HookScripts {
94
+ 'pre-commit': string;
95
+ 'commit-msg': string;
96
+ 'pre-push': string;
97
+ }
98
+ export interface LintCheckResult {
99
+ passed: boolean;
100
+ command: string;
101
+ issueCount: number;
102
+ output: string;
103
+ }
104
+ /** A generated agent prompt for a specific architecture layer. */
105
+ export interface AgentPrompt {
106
+ /** Unique agent name, e.g. "frontend-agent". */
107
+ name: string;
108
+ /** Canonical layer name, e.g. "frontend", "backend". */
109
+ layer: string;
110
+ /** Directories the agent owns exclusively, e.g. ["src/components/", "src/pages/"]. */
111
+ ownedPaths: string[];
112
+ /** Full prompt text ready to use as a teammate definition. */
113
+ prompt: string;
114
+ /** Recommended model tier based on task complexity. */
115
+ recommendedModel: 'haiku' | 'sonnet' | 'opus';
116
+ }
117
+ export interface AreaScore {
118
+ label: string;
119
+ score: number;
120
+ suggestions: string[];
121
+ }
122
+ export interface ConventionSyncReport {
123
+ /** Weighted average of all four health dimensions (0–100). */
124
+ overallScore: number;
125
+ /** Health score from reconcile_rules (25% weight). */
126
+ rulesHealth: number;
127
+ /** Health score from reconcile_skills (25% weight). */
128
+ skillsHealth: number;
129
+ /** Health score from reconcile_hooks (25% weight). */
130
+ hooksHealth: number;
131
+ /** Score derived from convention violation count (25% weight). */
132
+ conventionHealth: number;
133
+ /** Human-readable one-line summary of the overall sync state. */
134
+ summary: string;
135
+ /** Ordered list of actionable next steps (highest impact first). */
136
+ recommendations: string[];
137
+ }
138
+ export interface PlatformDefinition {
139
+ id: string;
140
+ name: string;
141
+ rulesFile: string | null;
142
+ skillsDir: string | null;
143
+ format: 'markdown' | 'json' | 'yaml' | 'toml';
144
+ configFiles: string[];
145
+ }
146
+ export interface PlanuJsonConfig {
147
+ customPlatforms?: PlatformDefinition[];
148
+ specTemplate?: {
149
+ acceptanceCriteria?: unknown;
150
+ qualityGates?: unknown;
151
+ };
152
+ autoInstallSkills?: boolean;
153
+ lastSeenVersion?: string;
154
+ }
155
+ //# sourceMappingURL=conventions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conventions.d.ts","sourceRoot":"","sources":["../../src/types/conventions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ // Planu — Convention scanner types (SPEC-192)
2
+ export {};
3
+ //# sourceMappingURL=conventions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conventions.js","sourceRoot":"","sources":["../../src/types/conventions.ts"],"names":[],"mappings":"AAAA,8CAA8C"}
@@ -0,0 +1,76 @@
1
+ export type FeedbackType = 'bug' | 'feature' | 'suggestion' | 'dx';
2
+ export type FeedbackStatus = 'pending' | 'triaged' | 'spec_created' | 'implementing' | 'resolved' | 'dismissed';
3
+ export interface FeedbackEntry {
4
+ id: string;
5
+ type: FeedbackType;
6
+ title: string;
7
+ description: string;
8
+ context?: {
9
+ projectPath?: string;
10
+ currentFile?: string;
11
+ errorMessage?: string;
12
+ stack?: string;
13
+ };
14
+ status: FeedbackStatus;
15
+ specId?: string;
16
+ prUrl?: string;
17
+ resolvedAt?: string;
18
+ resolvedNotes?: string;
19
+ createdAt: string;
20
+ planuVersion: string;
21
+ tags?: string[];
22
+ votes?: number;
23
+ }
24
+ export interface FeedbackFilter {
25
+ type?: FeedbackType;
26
+ status?: FeedbackStatus;
27
+ specId?: string;
28
+ }
29
+ export interface FeedbackSummary {
30
+ total: number;
31
+ byType: Record<FeedbackType, number>;
32
+ byStatus: Record<FeedbackStatus, number>;
33
+ pending: number;
34
+ resolved: number;
35
+ avgResolutionDays: number;
36
+ topRequests: {
37
+ title: string;
38
+ votes: number;
39
+ id: string;
40
+ }[];
41
+ }
42
+ export interface TriageGroup {
43
+ representative: FeedbackEntry;
44
+ similar: FeedbackEntry[];
45
+ suggestedAction: 'create_spec' | 'merge_with_existing' | 'dismiss';
46
+ suggestedSpecTitle?: string;
47
+ }
48
+ export interface SubmitFeedbackInput {
49
+ type: string;
50
+ title: string;
51
+ description: string;
52
+ context?: {
53
+ projectPath?: string;
54
+ currentFile?: string;
55
+ errorMessage?: string;
56
+ stack?: string;
57
+ };
58
+ }
59
+ export interface TriageFeedbackInput {
60
+ filter?: string;
61
+ }
62
+ export interface ResolveFeedbackInput {
63
+ feedbackId: string;
64
+ specId?: string;
65
+ prUrl?: string;
66
+ notes?: string;
67
+ }
68
+ export interface RemoteFeedbackPayload {
69
+ type: string;
70
+ title: string;
71
+ description: string;
72
+ planuVersion: string;
73
+ stack?: string;
74
+ tags?: string[];
75
+ }
76
+ //# sourceMappingURL=feedback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback.d.ts","sourceRoot":"","sources":["../../src/types/feedback.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,SAAS,GAAG,YAAY,GAAG,IAAI,CAAC;AACnE,MAAM,MAAM,cAAc,GACtB,SAAS,GACT,SAAS,GACT,cAAc,GACd,cAAc,GACd,UAAU,GACV,WAAW,CAAC;AAEhB,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE;QACR,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACrC,QAAQ,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC7D;AAED,MAAM,WAAW,WAAW;IAC1B,cAAc,EAAE,aAAa,CAAC;IAC9B,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,eAAe,EAAE,aAAa,GAAG,qBAAqB,GAAG,SAAS,CAAC;IACnE,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE;QACR,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB"}
@@ -0,0 +1,3 @@
1
+ // types/feedback.ts — Feedback Hub domain types (SPEC-188)
2
+ export {};
3
+ //# sourceMappingURL=feedback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback.js","sourceRoot":"","sources":["../../src/types/feedback.ts"],"names":[],"mappings":"AAAA,2DAA2D"}
@@ -106,4 +106,7 @@ export * from './resources.js';
106
106
  export * from './discovery.js';
107
107
  export * from './token-ledger.js';
108
108
  export type * from './verifiable-criteria.js';
109
+ export type * from './ai-tool-rules.js';
110
+ export type * from './feedback.js';
111
+ export * from './conventions.js';
109
112
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -106,4 +106,5 @@ export * from './observability.js';
106
106
  export * from './resources.js';
107
107
  export * from './discovery.js';
108
108
  export * from './token-ledger.js';
109
+ export * from './conventions.js';
109
110
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -86,5 +86,9 @@ export interface InitProjectResultInput {
86
86
  prettierCreated: boolean;
87
87
  /** SPEC-178: Suggestions for missing linting/formatting tools */
88
88
  lintSuggestions: string[];
89
+ /** SPEC-187: Architecture rules files written to disk */
90
+ architectureRulesWritten: string[];
91
+ /** SPEC-187: Architecture rules files skipped (already existed) */
92
+ architectureRulesSkipped: string[];
89
93
  }
90
94
  //# sourceMappingURL=planu-config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"planu-config.d.ts","sourceRoot":"","sources":["../../../src/types/project/planu-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"planu-config.d.ts","sourceRoot":"","sources":["../../../src/types/project/planu-config.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@planu/cli",
3
- "version": "0.72.0",
3
+ "version": "0.74.0",
4
4
  "description": "Planu — MCP Server for Spec Driven Development. Manages specs, estimations, reverse engineering, and auto-learning across any language/framework.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -52,7 +52,8 @@
52
52
  "registry_install",
53
53
  "generate_spec_dashboard",
54
54
  "skill_search",
55
- "skill_install"
55
+ "skill_install",
56
+ "submit_feedback"
56
57
  ],
57
58
  "proTools": [
58
59
  "audit",
@@ -91,6 +92,10 @@
91
92
  "paradigm_report",
92
93
  "plan_upgrade",
93
94
  "reality_check",
95
+ "reconcile_hooks",
96
+ "reconcile_rules",
97
+ "reconcile_skills",
98
+ "config_health",
94
99
  "reconcile_spec",
95
100
  "request_context",
96
101
  "reverse_engineer",
@@ -171,7 +176,9 @@
171
176
  "discover_registry",
172
177
  "publish_registry",
173
178
  "generate_infrastructure",
174
- "spec_usage_report"
179
+ "spec_usage_report",
180
+ "triage_feedback",
181
+ "resolve_feedback"
175
182
  ],
176
183
  "alwaysAllowed": [
177
184
  "activate_license",
@@ -3,7 +3,7 @@
3
3
  {
4
4
  "id": "core",
5
5
  "name": "Core",
6
- "description": "Essential tools always available project setup, locale, spec listing, and group management.",
6
+ "description": "Essential tools always available \u2014 project setup, locale, spec listing, and group management.",
7
7
  "tools": ["set_locale", "init_project", "init_constitution", "list_specs", "activate_group", "list_groups"],
8
8
  "defaultEnabled": true,
9
9
  "locked": true
@@ -22,6 +22,10 @@
22
22
  "clarify_requirements",
23
23
  "summarize_spec",
24
24
  "reconcile_spec",
25
+ "reconcile_hooks",
26
+ "reconcile_rules",
27
+ "reconcile_skills",
28
+ "config_health",
25
29
  "list_templates",
26
30
  "apply_template",
27
31
  "spec_history",