cc-devflow 4.5.2 → 4.5.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/skills/cc-act/CHANGELOG.md +19 -0
- package/.claude/skills/cc-act/PLAYBOOK.md +14 -1
- package/.claude/skills/cc-act/SKILL.md +46 -6
- package/.claude/skills/cc-act/assets/PR_BRIEF_TEMPLATE.md +44 -1
- package/.claude/skills/cc-act/assets/RELEASE_NOTE_TEMPLATE.md +18 -1
- package/.claude/skills/cc-act/references/closure-contract.md +3 -0
- package/.claude/skills/cc-act/scripts/cc-act-common.sh +27 -1
- package/.claude/skills/cc-act/scripts/render-pr-brief.sh +31 -0
- package/.claude/skills/cc-act/scripts/verify-act-gate.sh +6 -0
- package/.claude/skills/cc-check/CHANGELOG.md +18 -0
- package/.claude/skills/cc-check/PLAYBOOK.md +38 -7
- package/.claude/skills/cc-check/SKILL.md +39 -7
- package/.claude/skills/cc-check/assets/REPORT_CARD_TEMPLATE.json +61 -0
- package/.claude/skills/cc-check/references/gate-contract.md +11 -0
- package/.claude/skills/cc-check/references/review-contract.md +17 -1
- package/.claude/skills/cc-check/scripts/render-report-card.js +37 -0
- package/.claude/skills/cc-check/scripts/verify-gate.sh +7 -0
- package/.claude/skills/cc-do/CHANGELOG.md +18 -0
- package/.claude/skills/cc-do/PLAYBOOK.md +20 -13
- package/.claude/skills/cc-do/SKILL.md +37 -17
- package/.claude/skills/cc-do/references/execution-recovery.md +19 -5
- package/.claude/skills/cc-do/references/parallel-dispatch.md +6 -4
- package/.claude/skills/cc-do/scripts/detect-file-conflicts.sh +49 -3
- package/.claude/skills/cc-do/scripts/verify-task-gates.sh +19 -6
- package/.claude/skills/cc-do/scripts/write-task-checkpoint.sh +14 -2
- package/.claude/skills/cc-investigate/CHANGELOG.md +24 -0
- package/.claude/skills/cc-investigate/PLAYBOOK.md +35 -13
- package/.claude/skills/cc-investigate/SKILL.md +87 -20
- package/.claude/skills/cc-investigate/assets/ANALYSIS_TEMPLATE.md +68 -3
- package/.claude/skills/cc-investigate/assets/TASKS_TEMPLATE.md +9 -4
- package/.claude/skills/cc-investigate/assets/TASK_MANIFEST_TEMPLATE.json +41 -2
- package/.claude/skills/cc-investigate/references/investigation-contract.md +46 -0
- package/.claude/skills/cc-plan/CHANGELOG.md +32 -0
- package/.claude/skills/cc-plan/PLAYBOOK.md +26 -8
- package/.claude/skills/cc-plan/SKILL.md +79 -34
- package/.claude/skills/cc-plan/assets/DESIGN_TEMPLATE.md +71 -3
- package/.claude/skills/cc-plan/assets/TASKS_TEMPLATE.md +32 -0
- package/.claude/skills/cc-plan/assets/TASK_MANIFEST_TEMPLATE.json +76 -2
- package/.claude/skills/cc-plan/assets/TINY_DESIGN_TEMPLATE.md +58 -0
- package/.claude/skills/cc-plan/references/planning-contract.md +26 -4
- package/.claude/skills/cc-roadmap/CHANGELOG.md +14 -0
- package/.claude/skills/cc-roadmap/PLAYBOOK.md +10 -7
- package/.claude/skills/cc-roadmap/SKILL.md +43 -23
- package/.claude/skills/cc-roadmap/assets/BACKLOG_TEMPLATE.md +10 -0
- package/.claude/skills/cc-roadmap/assets/ROADMAP_TEMPLATE.md +15 -0
- package/.claude/skills/cc-roadmap/assets/TRACKING_TEMPLATE.json +1 -1
- package/.claude/skills/cc-roadmap/references/roadmap-dialogue.md +11 -7
- package/.claude/skills/cc-simplify/CHANGELOG.md +6 -0
- package/.claude/skills/cc-simplify/SKILL.md +10 -1
- package/.claude/skills/cc-spec-init/CHANGELOG.md +6 -0
- package/.claude/skills/cc-spec-init/SKILL.md +14 -1
- package/CHANGELOG.md +29 -0
- package/README.md +10 -2
- package/README.zh-CN.md +10 -2
- package/bin/cc-devflow-cli.js +93 -2
- package/docs/examples/example-bindings.json +7 -7
- package/docs/examples/full-design-blocked/BACKLOG.md +1 -1
- package/docs/examples/full-design-blocked/README.md +1 -1
- package/docs/examples/full-design-blocked/ROADMAP.md +1 -1
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/design.md +1 -1
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/tasks.md +1 -1
- package/docs/examples/full-design-blocked/roadmap-tracking.json +1 -1
- package/docs/examples/local-handoff/BACKLOG.md +1 -1
- package/docs/examples/local-handoff/README.md +1 -1
- package/docs/examples/local-handoff/ROADMAP.md +1 -1
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/design.md +1 -1
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/tasks.md +1 -1
- package/docs/examples/local-handoff/roadmap-tracking.json +1 -1
- package/docs/examples/pdca-loop/BACKLOG.md +1 -1
- package/docs/examples/pdca-loop/README.md +1 -1
- package/docs/examples/pdca-loop/ROADMAP.md +1 -1
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/design.md +1 -1
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json +2 -2
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md +1 -1
- package/docs/examples/pdca-loop/roadmap-tracking.json +1 -1
- package/docs/get-shit-done-strategy-audit.md +518 -0
- package/docs/skill-strategy-audit.md +48 -0
- package/lib/compiler/__tests__/inventory.test.js +51 -0
- package/lib/compiler/inventory.js +78 -0
- package/lib/skill-runtime/__tests__/approve.test.js +92 -0
- package/lib/skill-runtime/__tests__/autopilot.test.js +4 -0
- package/lib/skill-runtime/__tests__/planner.tdd.test.js +20 -0
- package/lib/skill-runtime/__tests__/query.test.js +147 -1
- package/lib/skill-runtime/__tests__/readiness.test.js +53 -0
- package/lib/skill-runtime/__tests__/release.test.js +85 -0
- package/lib/skill-runtime/__tests__/runtime.integration.test.js +30 -1
- package/lib/skill-runtime/__tests__/schemas.test.js +56 -0
- package/lib/skill-runtime/__tests__/worker-run.test.js +29 -0
- package/lib/skill-runtime/errors.js +39 -0
- package/lib/skill-runtime/index.js +8 -0
- package/lib/skill-runtime/operations/approve.js +17 -2
- package/lib/skill-runtime/operations/release.js +6 -3
- package/lib/skill-runtime/operations/worker-run.js +30 -0
- package/lib/skill-runtime/planner.js +10 -2
- package/lib/skill-runtime/query-registry.js +101 -0
- package/lib/skill-runtime/query.js +159 -91
- package/lib/skill-runtime/readiness.js +84 -0
- package/lib/skill-runtime/schemas.js +39 -4
- package/lib/skill-runtime/trace.js +22 -0
- package/package.json +1 -1
|
@@ -16,6 +16,25 @@ const ChangeIdSchema = z.string().regex(CHANGE_ID_PATTERN, 'Invalid changeId for
|
|
|
16
16
|
const TaskStatusSchema = z.enum(['pending', 'running', 'passed', 'failed', 'skipped']);
|
|
17
17
|
const ReviewDecisionStatusSchema = z.enum(['pending', 'pass', 'fail', 'blocked', 'skipped']);
|
|
18
18
|
|
|
19
|
+
function normalizeTouch(value) {
|
|
20
|
+
return String(value)
|
|
21
|
+
.replace(/\\/g, '/')
|
|
22
|
+
.replace(/\/+/g, '/')
|
|
23
|
+
.replace(/^\.\//, '')
|
|
24
|
+
.replace(/\/$/, '');
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function overlappingTouch(left, right) {
|
|
28
|
+
if (left === right) return left;
|
|
29
|
+
if (left && right.startsWith(`${left}/`)) return left;
|
|
30
|
+
if (right && left.startsWith(`${right}/`)) return right;
|
|
31
|
+
return '';
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function taskTouches(task) {
|
|
35
|
+
return [...new Set([...(task.touches || []), ...(task.files || [])].map(normalizeTouch).filter(Boolean))];
|
|
36
|
+
}
|
|
37
|
+
|
|
19
38
|
const RuntimeStatusSchema = z.enum(['initialized', 'planned', 'in_progress', 'verified', 'released']);
|
|
20
39
|
const ApprovalStatusSchema = z.enum(['pending', 'approved']);
|
|
21
40
|
const ExecutionModeSchema = z.enum(['direct', 'delegate', 'team']);
|
|
@@ -213,7 +232,7 @@ const ManifestSchema = z.object({
|
|
|
213
232
|
continue;
|
|
214
233
|
}
|
|
215
234
|
|
|
216
|
-
const leftTouches =
|
|
235
|
+
const leftTouches = taskTouches(left);
|
|
217
236
|
|
|
218
237
|
for (let rightIndex = leftIndex + 1; rightIndex < manifest.tasks.length; rightIndex += 1) {
|
|
219
238
|
const right = manifest.tasks[rightIndex];
|
|
@@ -233,8 +252,14 @@ const ManifestSchema = z.object({
|
|
|
233
252
|
});
|
|
234
253
|
}
|
|
235
254
|
|
|
236
|
-
const
|
|
237
|
-
|
|
255
|
+
const rightTouches = taskTouches(right);
|
|
256
|
+
const sharedTouches = [
|
|
257
|
+
...new Set(
|
|
258
|
+
leftTouches.flatMap((leftTouch) =>
|
|
259
|
+
rightTouches.map((rightTouch) => overlappingTouch(leftTouch, rightTouch)).filter(Boolean)
|
|
260
|
+
)
|
|
261
|
+
)
|
|
262
|
+
];
|
|
238
263
|
|
|
239
264
|
if (sharedTouches.length > 0) {
|
|
240
265
|
ctx.addIssue({
|
|
@@ -247,6 +272,14 @@ const ManifestSchema = z.object({
|
|
|
247
272
|
}
|
|
248
273
|
});
|
|
249
274
|
|
|
275
|
+
const TddCheckpointEvidenceSchema = z.object({
|
|
276
|
+
red: z.record(z.any()).optional(),
|
|
277
|
+
green: z.record(z.any()).optional(),
|
|
278
|
+
refactor: z.record(z.any()).optional(),
|
|
279
|
+
feedbackLoop: z.record(z.any()).optional(),
|
|
280
|
+
testQuality: z.record(z.any()).optional()
|
|
281
|
+
}).passthrough();
|
|
282
|
+
|
|
250
283
|
const CheckpointSchema = z.object({
|
|
251
284
|
changeId: ChangeIdSchema,
|
|
252
285
|
taskId: z.string().regex(TASK_ID_PATTERN),
|
|
@@ -257,7 +290,9 @@ const CheckpointSchema = z.object({
|
|
|
257
290
|
error: z.string().default(''),
|
|
258
291
|
outputExcerpt: z.string().default(''),
|
|
259
292
|
timestamp: z.string().datetime(),
|
|
260
|
-
attempt: z.number().int().min(0).default(0)
|
|
293
|
+
attempt: z.number().int().min(0).default(0),
|
|
294
|
+
tdd: TddCheckpointEvidenceSchema.optional(),
|
|
295
|
+
tddException: z.record(z.any()).optional()
|
|
261
296
|
});
|
|
262
297
|
|
|
263
298
|
const GateResultSchema = z.object({
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* [INPUT]: 接收 query/doctor/preflight 的事件名、artifact refs 与下一动作。
|
|
3
|
+
* [OUTPUT]: 生成统一 trace shape,供恢复、排查和 report-card 引用。
|
|
4
|
+
* [POS]: skill runtime 的 operational trace 层,不承载 workflow 决策。
|
|
5
|
+
* [PROTOCOL]: 变更时更新此头部,然后检查 CLAUDE.md
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
const crypto = require('crypto');
|
|
9
|
+
|
|
10
|
+
function createTrace({ event, changeId, artifactRefs = [], nextAction = 'inspect-result' } = {}) {
|
|
11
|
+
return {
|
|
12
|
+
eventId: `trace-${crypto.randomUUID()}`,
|
|
13
|
+
event: event || 'runtime-event',
|
|
14
|
+
changeId: changeId || '',
|
|
15
|
+
artifactRefs,
|
|
16
|
+
nextAction
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
module.exports = {
|
|
21
|
+
createTrace
|
|
22
|
+
};
|