kyro-ai 3.2.2 → 3.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 (110) hide show
  1. package/.claude-plugin/plugin.json +4 -2
  2. package/README.md +14 -1
  3. package/WORKFLOW.yaml +1 -1
  4. package/agents/orchestrator.md +3 -3
  5. package/commands/status.md +2 -2
  6. package/dist/cli/app.d.ts.map +1 -1
  7. package/dist/cli/app.js +9 -0
  8. package/dist/cli/app.js.map +1 -1
  9. package/dist/cli/artifacts/json.d.ts +8 -0
  10. package/dist/cli/artifacts/json.d.ts.map +1 -0
  11. package/dist/cli/artifacts/json.js +18 -0
  12. package/dist/cli/artifacts/json.js.map +1 -0
  13. package/dist/cli/artifacts/paths.d.ts +9 -0
  14. package/dist/cli/artifacts/paths.d.ts.map +1 -0
  15. package/dist/cli/artifacts/paths.js +36 -0
  16. package/dist/cli/artifacts/paths.js.map +1 -0
  17. package/dist/cli/artifacts/schema.d.ts +102 -0
  18. package/dist/cli/artifacts/schema.d.ts.map +1 -0
  19. package/dist/cli/artifacts/schema.js +157 -0
  20. package/dist/cli/artifacts/schema.js.map +1 -0
  21. package/dist/cli/commands/artifact-doctor.d.ts +8 -0
  22. package/dist/cli/commands/artifact-doctor.d.ts.map +1 -0
  23. package/dist/cli/commands/artifact-doctor.js +246 -0
  24. package/dist/cli/commands/artifact-doctor.js.map +1 -0
  25. package/dist/cli/commands/doctor.d.ts +1 -1
  26. package/dist/cli/commands/doctor.d.ts.map +1 -1
  27. package/dist/cli/commands/doctor.js +5 -2
  28. package/dist/cli/commands/doctor.js.map +1 -1
  29. package/dist/cli/commands/repair.d.ts +4 -0
  30. package/dist/cli/commands/repair.d.ts.map +1 -0
  31. package/dist/cli/commands/repair.js +271 -0
  32. package/dist/cli/commands/repair.js.map +1 -0
  33. package/dist/cli/commands/scope.d.ts +2 -0
  34. package/dist/cli/commands/scope.d.ts.map +1 -0
  35. package/dist/cli/commands/scope.js +113 -0
  36. package/dist/cli/commands/scope.js.map +1 -0
  37. package/dist/cli/commands/token-audit.d.ts.map +1 -1
  38. package/dist/cli/commands/token-audit.js +124 -2
  39. package/dist/cli/commands/token-audit.js.map +1 -1
  40. package/dist/cli/commands/tui.js +3 -3
  41. package/dist/cli/commands/tui.js.map +1 -1
  42. package/dist/cli/help.d.ts.map +1 -1
  43. package/dist/cli/help.js +35 -2
  44. package/dist/cli/help.js.map +1 -1
  45. package/dist/cli/options.d.ts.map +1 -1
  46. package/dist/cli/options.js +17 -0
  47. package/dist/cli/options.js.map +1 -1
  48. package/dist/cli/types.d.ts +2 -0
  49. package/dist/cli/types.d.ts.map +1 -1
  50. package/docs/cli.md +35 -2
  51. package/fixtures/artifact-integrity/active-sprint-missing/.agents/kyro/kyro.json +11 -0
  52. package/fixtures/artifact-integrity/active-sprint-missing/.agents/kyro/scopes/demo/DEBT.summary.json +12 -0
  53. package/fixtures/artifact-integrity/active-sprint-missing/.agents/kyro/scopes/demo/RE-ENTRY-PROMPTS.md +1 -0
  54. package/fixtures/artifact-integrity/active-sprint-missing/.agents/kyro/scopes/demo/ROADMAP.md +4 -0
  55. package/fixtures/artifact-integrity/active-sprint-missing/.agents/kyro/scopes/demo/ROADMAP.summary.json +15 -0
  56. package/fixtures/artifact-integrity/active-sprint-missing/.agents/kyro/scopes/demo/index.json +15 -0
  57. package/fixtures/artifact-integrity/active-sprint-missing/.agents/kyro/scopes/demo/phases/SPRINT-001-demo.md +8 -0
  58. package/fixtures/artifact-integrity/active-sprint-missing/.agents/kyro/scopes/demo/phases/SPRINT-001-demo.summary.json +16 -0
  59. package/fixtures/artifact-integrity/active-sprint-missing/.agents/kyro/scopes/demo/state.json +11 -0
  60. package/fixtures/artifact-integrity/invalid-state/.agents/kyro/kyro.json +11 -0
  61. package/fixtures/artifact-integrity/invalid-state/.agents/kyro/scopes/demo/DEBT.summary.json +12 -0
  62. package/fixtures/artifact-integrity/invalid-state/.agents/kyro/scopes/demo/RE-ENTRY-PROMPTS.md +1 -0
  63. package/fixtures/artifact-integrity/invalid-state/.agents/kyro/scopes/demo/ROADMAP.md +4 -0
  64. package/fixtures/artifact-integrity/invalid-state/.agents/kyro/scopes/demo/ROADMAP.summary.json +15 -0
  65. package/fixtures/artifact-integrity/invalid-state/.agents/kyro/scopes/demo/index.json +15 -0
  66. package/fixtures/artifact-integrity/invalid-state/.agents/kyro/scopes/demo/phases/SPRINT-001-demo.md +8 -0
  67. package/fixtures/artifact-integrity/invalid-state/.agents/kyro/scopes/demo/phases/SPRINT-001-demo.summary.json +16 -0
  68. package/fixtures/artifact-integrity/invalid-state/.agents/kyro/scopes/demo/state.json +10 -0
  69. package/fixtures/artifact-integrity/missing-summary/.agents/kyro/kyro.json +11 -0
  70. package/fixtures/artifact-integrity/missing-summary/.agents/kyro/scopes/demo/RE-ENTRY-PROMPTS.md +1 -0
  71. package/fixtures/artifact-integrity/missing-summary/.agents/kyro/scopes/demo/ROADMAP.md +4 -0
  72. package/fixtures/artifact-integrity/missing-summary/.agents/kyro/scopes/demo/index.json +15 -0
  73. package/fixtures/artifact-integrity/missing-summary/.agents/kyro/scopes/demo/phases/SPRINT-001-demo.md +8 -0
  74. package/fixtures/artifact-integrity/missing-summary/.agents/kyro/scopes/demo/state.json +11 -0
  75. package/fixtures/artifact-integrity/stale-summary/.agents/kyro/kyro.json +11 -0
  76. package/fixtures/artifact-integrity/stale-summary/.agents/kyro/scopes/demo/DEBT.summary.json +12 -0
  77. package/fixtures/artifact-integrity/stale-summary/.agents/kyro/scopes/demo/RE-ENTRY-PROMPTS.md +1 -0
  78. package/fixtures/artifact-integrity/stale-summary/.agents/kyro/scopes/demo/ROADMAP.md +4 -0
  79. package/fixtures/artifact-integrity/stale-summary/.agents/kyro/scopes/demo/ROADMAP.summary.json +15 -0
  80. package/fixtures/artifact-integrity/stale-summary/.agents/kyro/scopes/demo/index.json +15 -0
  81. package/fixtures/artifact-integrity/stale-summary/.agents/kyro/scopes/demo/phases/SPRINT-001-demo.md +8 -0
  82. package/fixtures/artifact-integrity/stale-summary/.agents/kyro/scopes/demo/phases/SPRINT-001-demo.summary.json +16 -0
  83. package/fixtures/artifact-integrity/stale-summary/.agents/kyro/scopes/demo/state.json +11 -0
  84. package/fixtures/artifact-integrity/valid/.agents/kyro/kyro.json +11 -0
  85. package/fixtures/artifact-integrity/valid/.agents/kyro/scopes/demo/DEBT.summary.json +12 -0
  86. package/fixtures/artifact-integrity/valid/.agents/kyro/scopes/demo/RE-ENTRY-PROMPTS.md +1 -0
  87. package/fixtures/artifact-integrity/valid/.agents/kyro/scopes/demo/ROADMAP.md +4 -0
  88. package/fixtures/artifact-integrity/valid/.agents/kyro/scopes/demo/ROADMAP.summary.json +15 -0
  89. package/fixtures/artifact-integrity/valid/.agents/kyro/scopes/demo/index.json +15 -0
  90. package/fixtures/artifact-integrity/valid/.agents/kyro/scopes/demo/phases/SPRINT-001-demo.md +8 -0
  91. package/fixtures/artifact-integrity/valid/.agents/kyro/scopes/demo/phases/SPRINT-001-demo.summary.json +16 -0
  92. package/fixtures/artifact-integrity/valid/.agents/kyro/scopes/demo/state.json +11 -0
  93. package/package.json +6 -2
  94. package/scripts/check-artifact-fixtures.mjs +56 -0
  95. package/skills/sprint-forge/SKILL.md +2 -2
  96. package/skills/sprint-forge/assets/README.md +15 -4
  97. package/skills/sprint-forge/assets/fixtures/subcommands-and-reports.sizingDecision.json +17 -0
  98. package/skills/sprint-forge/assets/helpers/analysis/audit.md +18 -0
  99. package/skills/sprint-forge/assets/helpers/analysis/bugfix.md +19 -0
  100. package/skills/sprint-forge/assets/helpers/analysis/feature.md +28 -0
  101. package/skills/sprint-forge/assets/helpers/analysis/new-project.md +18 -0
  102. package/skills/sprint-forge/assets/helpers/analysis/refactor.md +18 -0
  103. package/skills/sprint-forge/assets/helpers/analysis/tech-debt.md +18 -0
  104. package/skills/sprint-forge/assets/modes/INIT.md +33 -64
  105. package/skills/sprint-forge/assets/templates/PROJECT-README.md +16 -60
  106. package/skills/sprint-forge/assets/templates/REENTRY-PROMPTS.md +18 -87
  107. package/skills/sprint-forge/assets/templates/ROADMAP.md +16 -65
  108. package/skills/sprint-forge/assets/templates/ROADMAP.summary.json +9 -0
  109. package/skills/sprint-forge/assets/templates/index.json +9 -0
  110. package/skills/sprint-forge/assets/helpers/analysis-guide.md +0 -207
@@ -0,0 +1,15 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "scope": "demo",
4
+ "roadmapSummary": "Demo roadmap",
5
+ "activeSprintSummary": ".agents/kyro/scopes/demo/phases/SPRINT-001-demo.summary.json",
6
+ "openDebtCount": 1,
7
+ "nextTask": "T1.2",
8
+ "relevantArtifactPaths": {
9
+ "roadmap": ".agents/kyro/scopes/demo/ROADMAP.md",
10
+ "roadmapSummary": ".agents/kyro/scopes/demo/ROADMAP.summary.json",
11
+ "sprints": ".agents/kyro/scopes/demo/phases",
12
+ "reentry": ".agents/kyro/scopes/demo/RE-ENTRY-PROMPTS.md"
13
+ },
14
+ "lastUpdated": "2026-06-14T00:00:00.000Z"
15
+ }
@@ -0,0 +1,8 @@
1
+ # Sprint 1 Demo
2
+
3
+ - [x] T1.1 Completed task
4
+ - [ ] T1.2 Pending task
5
+
6
+ ## Debt
7
+ | ID | Item | Status | Priority |
8
+ | D1 | Demo debt | open | critical |
@@ -0,0 +1,16 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "scope": "demo",
4
+ "sprint": "SPRINT-001-demo",
5
+ "status": "active",
6
+ "completedTasks": 1,
7
+ "blockedTasks": 0,
8
+ "carryOverTasks": 0,
9
+ "nextRecommendedAction": "execute_task",
10
+ "nextTask": "T1.2",
11
+ "openDecisions": [],
12
+ "filesTouched": [],
13
+ "debtDeltas": [],
14
+ "sourceMarkdown": ".agents/kyro/scopes/demo/phases/SPRINT-001-demo.md",
15
+ "lastUpdated": "2026-06-14T00:00:00.000Z"
16
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "scope": "demo",
4
+ "status": "active",
5
+ "activeSprint": "SPRINT-999-missing",
6
+ "currentPhase": "sprint",
7
+ "nextAction": "execute_task",
8
+ "roadmapPath": ".agents/kyro/scopes/demo/ROADMAP.md",
9
+ "sprintsPath": ".agents/kyro/scopes/demo/phases",
10
+ "lastUpdated": "2026-06-14T00:00:00.000Z"
11
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "artifactRoot": ".agents/kyro/scopes",
4
+ "scopes": [
5
+ "demo"
6
+ ],
7
+ "activeScope": "demo",
8
+ "runtimeVersion": "3.2.3",
9
+ "runtimePath": "~/.agents/kyro/current",
10
+ "installedAdapters": []
11
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "scope": "demo",
4
+ "open": 1,
5
+ "inProgress": 0,
6
+ "resolved": 0,
7
+ "deferred": 0,
8
+ "critical": 1,
9
+ "oldestOpenItem": "| D1 | Demo debt | open | critical |",
10
+ "sourceMarkdown": ".agents/kyro/scopes/demo/phases/SPRINT-001-demo.md",
11
+ "lastUpdated": "2026-06-14T00:00:00.000Z"
12
+ }
@@ -0,0 +1,4 @@
1
+ # Demo roadmap
2
+
3
+ ## Sprint 1
4
+ - Focus: demo
@@ -0,0 +1,15 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "scope": "demo",
4
+ "status": "planned",
5
+ "summary": "Demo roadmap",
6
+ "plannedSprintCount": 1,
7
+ "completedSprintCount": 0,
8
+ "adaptationCount": 0,
9
+ "nextRecommendedAction": "execute_task",
10
+ "openDecisions": [],
11
+ "relevantArtifactPaths": [
12
+ ".agents/kyro/scopes/demo/ROADMAP.md"
13
+ ],
14
+ "lastUpdated": "2026-06-14T00:00:00.000Z"
15
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "scope": "demo",
4
+ "roadmapSummary": "Demo roadmap",
5
+ "activeSprintSummary": ".agents/kyro/scopes/demo/phases/SPRINT-001-demo.summary.json",
6
+ "openDebtCount": 1,
7
+ "nextTask": "T1.2",
8
+ "relevantArtifactPaths": {
9
+ "roadmap": ".agents/kyro/scopes/demo/ROADMAP.md",
10
+ "roadmapSummary": ".agents/kyro/scopes/demo/ROADMAP.summary.json",
11
+ "sprints": ".agents/kyro/scopes/demo/phases",
12
+ "reentry": ".agents/kyro/scopes/demo/RE-ENTRY-PROMPTS.md"
13
+ },
14
+ "lastUpdated": "2026-06-14T00:00:00.000Z"
15
+ }
@@ -0,0 +1,8 @@
1
+ # Sprint 1 Demo
2
+
3
+ - [x] T1.1 Completed task
4
+ - [ ] T1.2 Pending task
5
+
6
+ ## Debt
7
+ | ID | Item | Status | Priority |
8
+ | D1 | Demo debt | open | critical |
@@ -0,0 +1,16 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "scope": "demo",
4
+ "sprint": "SPRINT-001-demo",
5
+ "status": "active",
6
+ "completedTasks": 1,
7
+ "blockedTasks": 0,
8
+ "carryOverTasks": 0,
9
+ "nextRecommendedAction": "execute_task",
10
+ "nextTask": "T1.2",
11
+ "openDecisions": [],
12
+ "filesTouched": [],
13
+ "debtDeltas": [],
14
+ "sourceMarkdown": ".agents/kyro/scopes/demo/phases/SPRINT-001-demo.md",
15
+ "lastUpdated": "2026-06-14T00:00:00.000Z"
16
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "scope": "demo",
4
+ "status": "active",
5
+ "currentPhase": "sprint",
6
+ "nextAction": "execute_task",
7
+ "roadmapPath": ".agents/kyro/scopes/demo/ROADMAP.md",
8
+ "sprintsPath": ".agents/kyro/scopes/demo/phases",
9
+ "lastUpdated": "2026-06-14T00:00:00.000Z"
10
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "artifactRoot": ".agents/kyro/scopes",
4
+ "scopes": [
5
+ "demo"
6
+ ],
7
+ "activeScope": "demo",
8
+ "runtimeVersion": "3.2.3",
9
+ "runtimePath": "~/.agents/kyro/current",
10
+ "installedAdapters": []
11
+ }
@@ -0,0 +1,4 @@
1
+ # Demo roadmap
2
+
3
+ ## Sprint 1
4
+ - Focus: demo
@@ -0,0 +1,15 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "scope": "demo",
4
+ "roadmapSummary": "Demo roadmap",
5
+ "activeSprintSummary": ".agents/kyro/scopes/demo/phases/SPRINT-001-demo.summary.json",
6
+ "openDebtCount": 1,
7
+ "nextTask": "T1.2",
8
+ "relevantArtifactPaths": {
9
+ "roadmap": ".agents/kyro/scopes/demo/ROADMAP.md",
10
+ "roadmapSummary": ".agents/kyro/scopes/demo/ROADMAP.summary.json",
11
+ "sprints": ".agents/kyro/scopes/demo/phases",
12
+ "reentry": ".agents/kyro/scopes/demo/RE-ENTRY-PROMPTS.md"
13
+ },
14
+ "lastUpdated": "2026-06-14T00:00:00.000Z"
15
+ }
@@ -0,0 +1,8 @@
1
+ # Sprint 1 Demo
2
+
3
+ - [x] T1.1 Completed task
4
+ - [ ] T1.2 Pending task
5
+
6
+ ## Debt
7
+ | ID | Item | Status | Priority |
8
+ | D1 | Demo debt | open | critical |
@@ -0,0 +1,11 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "scope": "demo",
4
+ "status": "active",
5
+ "activeSprint": "SPRINT-001-demo",
6
+ "currentPhase": "sprint",
7
+ "nextAction": "execute_task",
8
+ "roadmapPath": ".agents/kyro/scopes/demo/ROADMAP.md",
9
+ "sprintsPath": ".agents/kyro/scopes/demo/phases",
10
+ "lastUpdated": "2026-06-14T00:00:00.000Z"
11
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "artifactRoot": ".agents/kyro/scopes",
4
+ "scopes": [
5
+ "demo"
6
+ ],
7
+ "activeScope": "demo",
8
+ "runtimeVersion": "3.2.3",
9
+ "runtimePath": "~/.agents/kyro/current",
10
+ "installedAdapters": []
11
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "scope": "demo",
4
+ "open": 1,
5
+ "inProgress": 0,
6
+ "resolved": 0,
7
+ "deferred": 0,
8
+ "critical": 1,
9
+ "oldestOpenItem": "| D1 | Demo debt | open | critical |",
10
+ "sourceMarkdown": ".agents/kyro/scopes/demo/phases/SPRINT-001-demo.md",
11
+ "lastUpdated": "2026-06-14T00:00:00.000Z"
12
+ }
@@ -0,0 +1,4 @@
1
+ # Demo roadmap
2
+
3
+ ## Sprint 1
4
+ - Focus: demo
@@ -0,0 +1,15 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "scope": "demo",
4
+ "status": "planned",
5
+ "summary": "Demo roadmap",
6
+ "plannedSprintCount": 1,
7
+ "completedSprintCount": 0,
8
+ "adaptationCount": 0,
9
+ "nextRecommendedAction": "execute_task",
10
+ "openDecisions": [],
11
+ "relevantArtifactPaths": [
12
+ ".agents/kyro/scopes/demo/ROADMAP.md"
13
+ ],
14
+ "lastUpdated": "2026-06-14T00:00:00.000Z"
15
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "scope": "demo",
4
+ "roadmapSummary": "Demo roadmap",
5
+ "activeSprintSummary": ".agents/kyro/scopes/demo/phases/SPRINT-001-demo.summary.json",
6
+ "openDebtCount": 1,
7
+ "nextTask": "T1.2",
8
+ "relevantArtifactPaths": {
9
+ "roadmap": ".agents/kyro/scopes/demo/ROADMAP.md",
10
+ "roadmapSummary": ".agents/kyro/scopes/demo/ROADMAP.summary.json",
11
+ "sprints": ".agents/kyro/scopes/demo/phases",
12
+ "reentry": ".agents/kyro/scopes/demo/RE-ENTRY-PROMPTS.md"
13
+ },
14
+ "lastUpdated": "2026-06-14T00:00:00.000Z"
15
+ }
@@ -0,0 +1,8 @@
1
+ # Sprint 1 Demo
2
+
3
+ - [x] T1.1 Completed task
4
+ - [ ] T1.2 Pending task
5
+
6
+ ## Debt
7
+ | ID | Item | Status | Priority |
8
+ | D1 | Demo debt | open | critical |
@@ -0,0 +1,16 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "scope": "demo",
4
+ "sprint": "SPRINT-001-demo",
5
+ "status": "active",
6
+ "completedTasks": 1,
7
+ "blockedTasks": 0,
8
+ "carryOverTasks": 0,
9
+ "nextRecommendedAction": "execute_task",
10
+ "nextTask": "T1.2",
11
+ "openDecisions": [],
12
+ "filesTouched": [],
13
+ "debtDeltas": [],
14
+ "sourceMarkdown": ".agents/kyro/scopes/demo/phases/SPRINT-001-demo.md",
15
+ "lastUpdated": "2026-06-14T00:00:00.000Z"
16
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "scope": "demo",
4
+ "status": "active",
5
+ "activeSprint": "SPRINT-001-demo",
6
+ "currentPhase": "sprint",
7
+ "nextAction": "execute_task",
8
+ "roadmapPath": ".agents/kyro/scopes/demo/ROADMAP.md",
9
+ "sprintsPath": ".agents/kyro/scopes/demo/phases",
10
+ "lastUpdated": "2026-06-14T00:00:00.000Z"
11
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "artifactRoot": ".agents/kyro/scopes",
4
+ "scopes": [
5
+ "demo"
6
+ ],
7
+ "activeScope": "demo",
8
+ "runtimeVersion": "3.2.3",
9
+ "runtimePath": "~/.agents/kyro/current",
10
+ "installedAdapters": []
11
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "scope": "demo",
4
+ "open": 1,
5
+ "inProgress": 0,
6
+ "resolved": 0,
7
+ "deferred": 0,
8
+ "critical": 1,
9
+ "oldestOpenItem": "| D1 | Demo debt | open | critical |",
10
+ "sourceMarkdown": ".agents/kyro/scopes/demo/phases/SPRINT-001-demo.md",
11
+ "lastUpdated": "2026-06-14T00:00:00.000Z"
12
+ }
@@ -0,0 +1,4 @@
1
+ # Demo roadmap
2
+
3
+ ## Sprint 1
4
+ - Focus: demo
@@ -0,0 +1,15 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "scope": "demo",
4
+ "status": "planned",
5
+ "summary": "Demo roadmap",
6
+ "plannedSprintCount": 1,
7
+ "completedSprintCount": 0,
8
+ "adaptationCount": 0,
9
+ "nextRecommendedAction": "execute_task",
10
+ "openDecisions": [],
11
+ "relevantArtifactPaths": [
12
+ ".agents/kyro/scopes/demo/ROADMAP.md"
13
+ ],
14
+ "lastUpdated": "2026-06-14T00:00:00.000Z"
15
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "scope": "demo",
4
+ "roadmapSummary": "Demo roadmap",
5
+ "activeSprintSummary": ".agents/kyro/scopes/demo/phases/SPRINT-001-demo.summary.json",
6
+ "openDebtCount": 1,
7
+ "nextTask": "T1.2",
8
+ "relevantArtifactPaths": {
9
+ "roadmap": ".agents/kyro/scopes/demo/ROADMAP.md",
10
+ "roadmapSummary": ".agents/kyro/scopes/demo/ROADMAP.summary.json",
11
+ "sprints": ".agents/kyro/scopes/demo/phases",
12
+ "reentry": ".agents/kyro/scopes/demo/RE-ENTRY-PROMPTS.md"
13
+ },
14
+ "lastUpdated": "2026-06-14T00:00:00.000Z"
15
+ }
@@ -0,0 +1,8 @@
1
+ # Sprint 1 Demo
2
+
3
+ - [x] T1.1 Completed task
4
+ - [ ] T1.2 Pending task
5
+
6
+ ## Debt
7
+ | ID | Item | Status | Priority |
8
+ | D1 | Demo debt | open | critical |
@@ -0,0 +1,16 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "scope": "demo",
4
+ "sprint": "SPRINT-001-demo",
5
+ "status": "active",
6
+ "completedTasks": 1,
7
+ "blockedTasks": 0,
8
+ "carryOverTasks": 0,
9
+ "nextRecommendedAction": "execute_task",
10
+ "nextTask": "T1.2",
11
+ "openDecisions": [],
12
+ "filesTouched": [],
13
+ "debtDeltas": [],
14
+ "sourceMarkdown": ".agents/kyro/scopes/demo/phases/SPRINT-001-demo.md",
15
+ "lastUpdated": "2026-06-14T00:00:00.000Z"
16
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "scope": "demo",
4
+ "status": "active",
5
+ "activeSprint": "SPRINT-001-demo",
6
+ "currentPhase": "sprint",
7
+ "nextAction": "execute_task",
8
+ "roadmapPath": ".agents/kyro/scopes/demo/ROADMAP.md",
9
+ "sprintsPath": ".agents/kyro/scopes/demo/phases",
10
+ "lastUpdated": "2026-06-14T00:00:00.000Z"
11
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kyro-ai",
3
- "version": "3.2.2",
3
+ "version": "3.3.0",
4
4
  "description": "Portable sprint workflow kit for AI coding agents, with markdown artifacts, adapter guides, and formal debt tracking",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -12,7 +12,10 @@
12
12
  "check:versions": "node scripts/check-versions.mjs",
13
13
  "check": "npm run typecheck && npm run check:versions && npm run check:links",
14
14
  "prepublishOnly": "npm run build",
15
- "build:chmod": "node scripts/make-cli-executable.mjs"
15
+ "build:chmod": "node scripts/make-cli-executable.mjs",
16
+ "check:tokens": "node dist/cli.js doctor --tokens",
17
+ "check:artifacts": "node dist/cli.js doctor --artifacts",
18
+ "check:artifact-fixtures": "node scripts/check-artifact-fixtures.mjs"
16
19
  },
17
20
  "keywords": [
18
21
  "ai-agents",
@@ -61,6 +64,7 @@
61
64
  "agents",
62
65
  "skills",
63
66
  "scripts",
67
+ "fixtures",
64
68
  "docs",
65
69
  "rules",
66
70
  "contexts",
@@ -0,0 +1,56 @@
1
+ import { cpSync, mkdtempSync, rmSync, utimesSync } from 'node:fs';
2
+ import { tmpdir } from 'node:os';
3
+ import { join, resolve } from 'node:path';
4
+ import { spawnSync } from 'node:child_process';
5
+
6
+ const repo = resolve(new URL('..', import.meta.url).pathname);
7
+ const cli = join(repo, 'dist/cli.js');
8
+ const fixtures = join(repo, 'fixtures/artifact-integrity');
9
+
10
+ function run(cwd, args) {
11
+ return spawnSync(process.execPath, [cli, ...args], {
12
+ cwd,
13
+ env: { ...process.env, HOME: join(cwd, '.home') },
14
+ encoding: 'utf-8',
15
+ });
16
+ }
17
+
18
+ function assert(condition, message) {
19
+ if (!condition) throw new Error(message);
20
+ }
21
+
22
+ function assertDoctor(name, expectedStatus, expectedText) {
23
+ const result = run(join(fixtures, name), ['doctor', '--artifacts', '--kyro-scope', 'demo']);
24
+ const output = `${result.stdout}\n${result.stderr}`;
25
+ assert(result.status === expectedStatus, `${name}: expected exit ${expectedStatus}, got ${result.status}\n${output}`);
26
+ assert(output.includes(expectedText), `${name}: expected output to include ${expectedText}\n${output}`);
27
+ }
28
+
29
+ assertDoctor('valid', 0, '[PASS] artifact state.json');
30
+ assertDoctor('missing-summary', 0, '[WARN] artifact ROADMAP.summary.json');
31
+ assertDoctor('invalid-state', 1, '[FAIL] artifact state.json');
32
+ assertDoctor('active-sprint-missing', 1, 'activeSprint not found');
33
+
34
+ const staleDir = mkdtempSync(join(tmpdir(), 'kyro-stale-'));
35
+ cpSync(join(fixtures, 'stale-summary'), staleDir, { recursive: true });
36
+ const roadmap = join(staleDir, '.agents/kyro/scopes/demo/ROADMAP.md');
37
+ const future = new Date(Date.now() + 5000);
38
+ utimesSync(roadmap, future, future);
39
+ const stale = run(staleDir, ['doctor', '--artifacts', '--kyro-scope', 'demo']);
40
+ const staleOutput = `${stale.stdout}\n${stale.stderr}`;
41
+ assert(stale.status === 0, `stale-summary: expected exit 0\n${staleOutput}`);
42
+ assert(staleOutput.includes('older than ROADMAP.md'), `stale-summary: expected stale warning\n${staleOutput}`);
43
+ rmSync(staleDir, { recursive: true, force: true });
44
+
45
+ const repairDir = mkdtempSync(join(tmpdir(), 'kyro-repair-'));
46
+ cpSync(join(fixtures, 'missing-summary'), repairDir, { recursive: true });
47
+ const repair = run(repairDir, ['repair', '--kyro-scope', 'demo', '--yes']);
48
+ const repairOutput = `${repair.stdout}\n${repair.stderr}`;
49
+ assert(repair.status === 0, `repair: expected exit 0\n${repairOutput}`);
50
+ const repaired = run(repairDir, ['doctor', '--artifacts', '--kyro-scope', 'demo']);
51
+ const repairedOutput = `${repaired.stdout}\n${repaired.stderr}`;
52
+ assert(repaired.status === 0, `repaired doctor: expected exit 0\n${repairedOutput}`);
53
+ assert(!repairedOutput.includes('missing'), `repaired doctor: expected missing warnings to be gone\n${repairedOutput}`);
54
+ rmSync(repairDir, { recursive: true, force: true });
55
+
56
+ console.log('Artifact integrity fixtures passed');
@@ -149,9 +149,9 @@ After detecting the mode, read ONLY the assets listed for that mode. Do NOT read
149
149
 
150
150
  | Mode | Read These Assets | Do NOT Read |
151
151
  |------|-------------------|-------------|
152
- | **INIT** | `INIT.md`, `analysis-guide.md`, `reentry-generator.md` | SPRINT.md, STATUS.md, sprint-generator.md, debt-tracker.md |
152
+ | **INIT** | `INIT.md`, then one routed `helpers/analysis/{workType}.md` helper | SPRINT.md, STATUS.md, sprint-generator.md, debt-tracker.md, unrelated analysis helpers |
153
153
  | **SPRINT** | `SPRINT.md`, then exactly one routed mode: `plan-sprint.md`, `execute-task.md`, `review-task.md`, `close-sprint.md`, or `recover.md` | INIT.md, STATUS.md, unrelated modes/helpers/templates |
154
- | **STATUS** | `STATUS.md`, `debt-tracker.md` | INIT.md, SPRINT.md, analysis-guide.md, sprint-generator.md, reentry-generator.md, all templates |
154
+ | **STATUS** | `STATUS.md`, `debt-tracker.md` | INIT.md, SPRINT.md, analysis helpers, sprint-generator.md, reentry-generator.md, all templates |
155
155
 
156
156
  **On-demand assets**: Templates are loaded as each workflow step references them, not upfront.
157
157
 
@@ -6,7 +6,7 @@ Kyro assets are designed for progressive disclosure: load the router first, then
6
6
 
7
7
  | File | Description |
8
8
  |------|-------------|
9
- | [INIT.md](modes/INIT.md) | Analysis, roadmap, scoped state, summaries, and scaffolding |
9
+ | [INIT.md](modes/INIT.md) | Lean analysis, justified sprint sizing, roadmap, scoped state, and summaries |
10
10
  | [SPRINT.md](modes/SPRINT.md) | Lightweight sprint router |
11
11
  | [plan-sprint.md](modes/plan-sprint.md) | Generate the next sprint |
12
12
  | [execute-task.md](modes/execute-task.md) | Execute active sprint tasks |
@@ -19,7 +19,12 @@ Kyro assets are designed for progressive disclosure: load the router first, then
19
19
 
20
20
  | File | Description |
21
21
  |------|-------------|
22
- | [analysis-guide.md](helpers/analysis-guide.md) | Analysis strategy per work type |
22
+ | [analysis/feature.md](helpers/analysis/feature.md) | Feature analysis and sizing signals |
23
+ | [analysis/bugfix.md](helpers/analysis/bugfix.md) | Bugfix analysis and sizing signals |
24
+ | [analysis/audit.md](helpers/analysis/audit.md) | Audit analysis and sizing signals |
25
+ | [analysis/refactor.md](helpers/analysis/refactor.md) | Refactor analysis and sizing signals |
26
+ | [analysis/new-project.md](helpers/analysis/new-project.md) | New project analysis and sizing signals |
27
+ | [analysis/tech-debt.md](helpers/analysis/tech-debt.md) | Tech debt analysis and sizing signals |
23
28
  | [sprint-generator.md](helpers/sprint-generator.md) | Sprint generation algorithm |
24
29
  | [debt-tracker.md](helpers/debt-tracker.md) | Accumulated debt rules |
25
30
  | [reentry-generator.md](helpers/reentry-generator.md) | Re-entry prompt updates |
@@ -30,12 +35,18 @@ Kyro assets are designed for progressive disclosure: load the router first, then
30
35
 
31
36
  | File | Description |
32
37
  |------|-------------|
33
- | [ROADMAP.md](templates/ROADMAP.md) | Human roadmap evidence |
38
+ | [ROADMAP.md](templates/ROADMAP.md) | Human roadmap evidence with sizingDecision |
34
39
  | [SPRINT.md](templates/SPRINT.md) | Human sprint evidence |
35
40
  | [PROJECT-README.md](templates/PROJECT-README.md) | Scope README |
36
- | [REENTRY-PROMPTS.md](templates/REENTRY-PROMPTS.md) | Human handoff prompts |
41
+ | [REENTRY-PROMPTS.md](templates/REENTRY-PROMPTS.md) | Summary-first recovery prompts |
37
42
  | [state.json](templates/state.json) | Scoped routing state |
38
43
  | [index.json](templates/index.json) | Fast agent routing index |
39
44
  | [ROADMAP.summary.json](templates/ROADMAP.summary.json) | Roadmap summary cache |
40
45
  | [SPRINT.summary.json](templates/SPRINT.summary.json) | Sprint summary cache |
41
46
  | [DEBT.summary.json](templates/DEBT.summary.json) | Debt summary cache |
47
+
48
+ ## fixtures/
49
+
50
+ | File | Description |
51
+ |------|-------------|
52
+ | [subcommands-and-reports.sizingDecision.json](fixtures/subcommands-and-reports.sizingDecision.json) | Regression fixture proving 3 justified sprints can be valid |
@@ -0,0 +1,17 @@
1
+ {
2
+ "recommendedSprintCount": 3,
3
+ "riskLevel": "medium",
4
+ "rationale": "The work has a dependency chain: CLI subcommands first, metadata reading second, removal reporting third.",
5
+ "splitTriggers": [
6
+ "public CLI behavior change",
7
+ "shared metadata reader dependency",
8
+ "cleanup reporting depends on metadata reading"
9
+ ],
10
+ "whyNotFewer": "Combining all changes would mix CLI refactor, metadata parsing, formatting, and reporting behavior in one review unit.",
11
+ "whyNotMore": "No additional subsystem boundaries or migrations were found.",
12
+ "sprintProofs": [
13
+ "Sprint 1 proves CLI subcommand architecture without changing metadata behavior.",
14
+ "Sprint 2 proves metadata reading and formatting independently.",
15
+ "Sprint 3 proves cleanup reporting built on metadata reading."
16
+ ]
17
+ }
@@ -0,0 +1,18 @@
1
+ # Audit Analysis
2
+
3
+ Use for broad quality, architecture, security, performance, or maintainability reviews.
4
+
5
+ ## Inspect
6
+
7
+ 1. Map entry points, package metadata, tests, and docs.
8
+ 2. Sample each major subsystem enough to identify real patterns.
9
+ 3. Let findings emerge from evidence; do not force a fixed checklist.
10
+ 4. Group findings by independent remediation area.
11
+
12
+ ## Findings
13
+
14
+ Each finding needs severity, evidence, affected files, impact, and recommended remediation.
15
+
16
+ ## Sizing signals
17
+
18
+ Audits commonly produce multiple sprints when findings affect independent subsystems or risk classes. Avoid over-splitting cosmetic issues that can be resolved together.