scene-capability-engine 3.0.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.
- package/CHANGELOG.md +2513 -0
- package/LICENSE +21 -0
- package/README.md +765 -0
- package/README.zh.md +630 -0
- package/bin/kiro-spec-engine.js +796 -0
- package/bin/kse.js +3 -0
- package/bin/sce.js +3 -0
- package/bin/sco.js +3 -0
- package/docs/331-poc-adaptation-roadmap.md +156 -0
- package/docs/331-poc-dual-track-integration-guide.md +120 -0
- package/docs/331-poc-weekly-delivery-checklist.md +52 -0
- package/docs/OFFLINE_INSTALL.md +96 -0
- package/docs/README.md +279 -0
- package/docs/adopt-migration-guide.md +599 -0
- package/docs/adoption-guide.md +616 -0
- package/docs/agent-hooks-analysis.md +815 -0
- package/docs/architecture.md +733 -0
- package/docs/articles/ai-driven-development-philosophy-and-practice-review.md +208 -0
- package/docs/articles/ai-driven-development-philosophy-and-practice.en.md +459 -0
- package/docs/articles/ai-driven-development-philosophy-and-practice.md +492 -0
- package/docs/autonomous-control-guide.md +851 -0
- package/docs/command-reference.md +1368 -0
- package/docs/community.md +115 -0
- package/docs/cross-tool-guide.md +555 -0
- package/docs/developer-guide.md +619 -0
- package/docs/document-governance.md +865 -0
- package/docs/environment-management-guide.md +526 -0
- package/docs/examples/add-export-command/design.md +194 -0
- package/docs/examples/add-export-command/requirements.md +110 -0
- package/docs/examples/add-export-command/tasks.md +88 -0
- package/docs/examples/add-rest-api/design.md +855 -0
- package/docs/examples/add-rest-api/requirements.md +323 -0
- package/docs/examples/add-rest-api/tasks.md +355 -0
- package/docs/examples/add-user-dashboard/design.md +192 -0
- package/docs/examples/add-user-dashboard/requirements.md +143 -0
- package/docs/examples/add-user-dashboard/tasks.md +91 -0
- package/docs/faq.md +697 -0
- package/docs/handoffs/evidence/ontology/moqui-template-baseline-2026-02-17-232922.json +156 -0
- package/docs/handoffs/evidence/ontology/moqui-template-baseline-2026-02-17-232922.md +24 -0
- package/docs/images/wechat-qr.png +0 -0
- package/docs/integration-modes.md +529 -0
- package/docs/integration-philosophy.md +313 -0
- package/docs/knowledge-management-guide.md +263 -0
- package/docs/manual-workflows-guide.md +418 -0
- package/docs/moqui-capability-matrix.md +73 -0
- package/docs/moqui-template-core-library-playbook.md +109 -0
- package/docs/multi-agent-coordination-guide.md +553 -0
- package/docs/multi-repo-management-guide.md +1344 -0
- package/docs/quick-start-with-ai-tools.md +375 -0
- package/docs/quick-start.md +146 -0
- package/docs/release-checklist.md +121 -0
- package/docs/releases/README.md +13 -0
- package/docs/releases/v1.46.2-validation.md +45 -0
- package/docs/releases/v1.46.2.md +50 -0
- package/docs/scene-runtime-guide.md +347 -0
- package/docs/spec-collaboration-guide.md +369 -0
- package/docs/spec-locking-guide.md +225 -0
- package/docs/spec-numbering-guide.md +348 -0
- package/docs/spec-workflow.md +519 -0
- package/docs/steering-strategy-guide.md +196 -0
- package/docs/team-collaboration-guide.md +465 -0
- package/docs/testing-strategy.md +272 -0
- package/docs/tools/claude-guide.md +654 -0
- package/docs/tools/cursor-guide.md +706 -0
- package/docs/tools/generic-guide.md +446 -0
- package/docs/tools/kiro-guide.md +308 -0
- package/docs/tools/vscode-guide.md +445 -0
- package/docs/tools/windsurf-guide.md +391 -0
- package/docs/troubleshooting.md +1135 -0
- package/docs/upgrade-guide.md +639 -0
- package/docs/value-observability-guide.md +127 -0
- package/docs/zh/README.md +341 -0
- package/docs/zh/quick-start.md +764 -0
- package/docs/zh/release-checklist.md +121 -0
- package/docs/zh/releases/README.md +13 -0
- package/docs/zh/releases/v1.46.2-validation.md +45 -0
- package/docs/zh/releases/v1.46.2.md +50 -0
- package/docs/zh/spec-numbering-guide.md +348 -0
- package/docs/zh/tools/claude-guide.md +349 -0
- package/docs/zh/tools/cursor-guide.md +281 -0
- package/docs/zh/tools/generic-guide.md +499 -0
- package/docs/zh/tools/kiro-guide.md +342 -0
- package/docs/zh/tools/vscode-guide.md +449 -0
- package/docs/zh/tools/windsurf-guide.md +378 -0
- package/docs/zh/value-observability-guide.md +127 -0
- package/docs//344/272/244/344/273/230/346/270/205/345/215/225.md +75 -0
- package/lib/adoption/adoption-logger.js +487 -0
- package/lib/adoption/adoption-strategy.js +538 -0
- package/lib/adoption/backup-manager.js +420 -0
- package/lib/adoption/conflict-resolver.js +410 -0
- package/lib/adoption/detection-engine.js +275 -0
- package/lib/adoption/diff-viewer.js +226 -0
- package/lib/adoption/error-formatter.js +509 -0
- package/lib/adoption/file-classifier.js +385 -0
- package/lib/adoption/progress-reporter.js +534 -0
- package/lib/adoption/smart-orchestrator.js +470 -0
- package/lib/adoption/strategy-selector.js +218 -0
- package/lib/adoption/summary-generator.js +493 -0
- package/lib/adoption/template-sync.js +605 -0
- package/lib/auto/autonomous-engine.js +485 -0
- package/lib/auto/checkpoint-manager.js +300 -0
- package/lib/auto/close-loop-runner.js +2476 -0
- package/lib/auto/config-schema.js +176 -0
- package/lib/auto/decision-engine.js +344 -0
- package/lib/auto/error-recovery-manager.js +580 -0
- package/lib/auto/goal-decomposer.js +278 -0
- package/lib/auto/progress-tracker.js +502 -0
- package/lib/auto/safety-manager.js +186 -0
- package/lib/auto/semantic-decomposer.js +137 -0
- package/lib/auto/state-manager.js +126 -0
- package/lib/auto/task-queue-manager.js +340 -0
- package/lib/backup/backup-system.js +372 -0
- package/lib/backup/selective-backup.js +207 -0
- package/lib/collab/agent-registry.js +240 -0
- package/lib/collab/collab-manager.js +285 -0
- package/lib/collab/contract-manager.js +320 -0
- package/lib/collab/coordinator.js +370 -0
- package/lib/collab/dependency-manager.js +280 -0
- package/lib/collab/index.js +20 -0
- package/lib/collab/integration-manager.js +202 -0
- package/lib/collab/merge-coordinator.js +252 -0
- package/lib/collab/metadata-manager.js +233 -0
- package/lib/collab/multi-agent-config.js +120 -0
- package/lib/collab/spec-lifecycle-manager.js +304 -0
- package/lib/collab/sync-barrier.js +88 -0
- package/lib/collab/visualizer.js +208 -0
- package/lib/commands/adopt.js +749 -0
- package/lib/commands/auto.js +19559 -0
- package/lib/commands/collab.js +275 -0
- package/lib/commands/context.js +99 -0
- package/lib/commands/docs.js +808 -0
- package/lib/commands/doctor.js +273 -0
- package/lib/commands/env.js +420 -0
- package/lib/commands/knowledge.js +309 -0
- package/lib/commands/lock.js +235 -0
- package/lib/commands/ops.js +409 -0
- package/lib/commands/orchestrate.js +446 -0
- package/lib/commands/prompt.js +105 -0
- package/lib/commands/repo.js +118 -0
- package/lib/commands/rollback.js +219 -0
- package/lib/commands/scene.js +15549 -0
- package/lib/commands/spec-bootstrap.js +147 -0
- package/lib/commands/spec-gate.js +157 -0
- package/lib/commands/spec-pipeline.js +205 -0
- package/lib/commands/status.js +321 -0
- package/lib/commands/task.js +199 -0
- package/lib/commands/templates.js +654 -0
- package/lib/commands/upgrade.js +231 -0
- package/lib/commands/value.js +569 -0
- package/lib/commands/watch.js +684 -0
- package/lib/commands/workflows.js +240 -0
- package/lib/commands/workspace-multi.js +325 -0
- package/lib/commands/workspace.js +189 -0
- package/lib/context/context-exporter.js +378 -0
- package/lib/context/prompt-generator.js +482 -0
- package/lib/data/moqui-capability-lexicon.json +45 -0
- package/lib/environment/backup-system.js +189 -0
- package/lib/environment/environment-manager.js +379 -0
- package/lib/environment/environment-registry.js +168 -0
- package/lib/gitignore/gitignore-backup.js +229 -0
- package/lib/gitignore/gitignore-detector.js +239 -0
- package/lib/gitignore/gitignore-integration.js +267 -0
- package/lib/gitignore/gitignore-transformer.js +193 -0
- package/lib/gitignore/layered-rules-template.js +42 -0
- package/lib/governance/archive-tool.js +284 -0
- package/lib/governance/cleanup-tool.js +237 -0
- package/lib/governance/config-manager.js +186 -0
- package/lib/governance/diagnostic-engine.js +271 -0
- package/lib/governance/doc-reference-checker.js +200 -0
- package/lib/governance/execution-logger.js +243 -0
- package/lib/governance/file-scanner.js +285 -0
- package/lib/governance/hooks-manager.js +333 -0
- package/lib/governance/reporter.js +337 -0
- package/lib/governance/validation-engine.js +181 -0
- package/lib/i18n.js +79 -0
- package/lib/knowledge/entry-manager.js +208 -0
- package/lib/knowledge/index-manager.js +261 -0
- package/lib/knowledge/knowledge-manager.js +273 -0
- package/lib/knowledge/template-manager.js +191 -0
- package/lib/lock/index.js +21 -0
- package/lib/lock/lock-file.js +192 -0
- package/lib/lock/lock-manager.js +321 -0
- package/lib/lock/machine-identifier.js +135 -0
- package/lib/lock/steering-file-lock.js +207 -0
- package/lib/lock/task-lock-manager.js +345 -0
- package/lib/operations/audit-logger.js +293 -0
- package/lib/operations/feedback-manager.js +1147 -0
- package/lib/operations/index.js +23 -0
- package/lib/operations/models/index.js +170 -0
- package/lib/operations/operations-manager.js +151 -0
- package/lib/operations/operations-validator.js +280 -0
- package/lib/operations/permission-manager.js +354 -0
- package/lib/operations/template-loader.js +143 -0
- package/lib/orchestrator/agent-spawner.js +629 -0
- package/lib/orchestrator/bootstrap-prompt-builder.js +236 -0
- package/lib/orchestrator/index.js +19 -0
- package/lib/orchestrator/orchestration-engine.js +1270 -0
- package/lib/orchestrator/orchestrator-config.js +173 -0
- package/lib/orchestrator/status-monitor.js +591 -0
- package/lib/python-checker.js +209 -0
- package/lib/repo/config-manager.js +580 -0
- package/lib/repo/errors/config-error.js +13 -0
- package/lib/repo/errors/git-error.js +15 -0
- package/lib/repo/errors/repo-error.js +14 -0
- package/lib/repo/git-operations.js +181 -0
- package/lib/repo/handlers/.gitkeep +1 -0
- package/lib/repo/handlers/exec-handler.js +155 -0
- package/lib/repo/handlers/health-handler.js +169 -0
- package/lib/repo/handlers/init-handler.js +197 -0
- package/lib/repo/handlers/status-handler.js +176 -0
- package/lib/repo/output-formatter.js +184 -0
- package/lib/repo/path-resolver.js +178 -0
- package/lib/repo/repo-manager.js +514 -0
- package/lib/scene-runtime/audit-emitter.js +59 -0
- package/lib/scene-runtime/binding-plugin-loader.js +351 -0
- package/lib/scene-runtime/binding-registry.js +349 -0
- package/lib/scene-runtime/eval-bridge.js +44 -0
- package/lib/scene-runtime/index.js +19 -0
- package/lib/scene-runtime/moqui-adapter.js +620 -0
- package/lib/scene-runtime/moqui-client.js +606 -0
- package/lib/scene-runtime/moqui-extractor.js +2029 -0
- package/lib/scene-runtime/plan-compiler.js +208 -0
- package/lib/scene-runtime/policy-gate.js +58 -0
- package/lib/scene-runtime/runtime-executor.js +358 -0
- package/lib/scene-runtime/scene-loader.js +96 -0
- package/lib/scene-runtime/scene-ontology.js +959 -0
- package/lib/scene-runtime/scene-template-linter.js +852 -0
- package/lib/scene-runtime/templates/scene-template-erp-query-v0.1.yaml +28 -0
- package/lib/scene-runtime/templates/scene-template-hybrid-shadow-v0.1.yaml +34 -0
- package/lib/spec/bootstrap/context-collector.js +48 -0
- package/lib/spec/bootstrap/draft-generator.js +158 -0
- package/lib/spec/bootstrap/questionnaire-engine.js +70 -0
- package/lib/spec/bootstrap/trace-emitter.js +59 -0
- package/lib/spec/multi-spec-orchestrate.js +93 -0
- package/lib/spec/pipeline/constants.js +6 -0
- package/lib/spec/pipeline/stage-adapters.js +118 -0
- package/lib/spec/pipeline/stage-runner.js +146 -0
- package/lib/spec/pipeline/state-store.js +119 -0
- package/lib/spec-gate/engine/gate-engine.js +165 -0
- package/lib/spec-gate/policy/default-policy.js +22 -0
- package/lib/spec-gate/policy/policy-loader.js +103 -0
- package/lib/spec-gate/result-emitter.js +81 -0
- package/lib/spec-gate/rules/default-rules.js +156 -0
- package/lib/spec-gate/rules/rule-registry.js +51 -0
- package/lib/steering/adoption-config.js +164 -0
- package/lib/steering/compliance-auto-fixer.js +204 -0
- package/lib/steering/compliance-cache.js +99 -0
- package/lib/steering/compliance-error-reporter.js +70 -0
- package/lib/steering/context-sync-manager.js +273 -0
- package/lib/steering/index.js +92 -0
- package/lib/steering/spec-steering.js +230 -0
- package/lib/steering/steering-compliance-checker.js +73 -0
- package/lib/steering/steering-loader.js +144 -0
- package/lib/steering/steering-manager.js +289 -0
- package/lib/task/index.js +12 -0
- package/lib/task/task-claimer.js +489 -0
- package/lib/task/task-status-store.js +418 -0
- package/lib/templates/cache-manager.js +440 -0
- package/lib/templates/content-generalizer.js +247 -0
- package/lib/templates/frontmatter-generator.js +128 -0
- package/lib/templates/git-handler.js +471 -0
- package/lib/templates/metadata-collector.js +328 -0
- package/lib/templates/path-utils.js +144 -0
- package/lib/templates/registry-parser.js +505 -0
- package/lib/templates/spec-reader.js +216 -0
- package/lib/templates/template-applicator.js +249 -0
- package/lib/templates/template-creator.js +256 -0
- package/lib/templates/template-error.js +143 -0
- package/lib/templates/template-exporter.js +502 -0
- package/lib/templates/template-manager.js +782 -0
- package/lib/templates/template-validator.js +361 -0
- package/lib/upgrade/migration-engine.js +382 -0
- package/lib/upgrade/migrations/.gitkeep +52 -0
- package/lib/upgrade/migrations/1.0.0-to-1.1.0.js +78 -0
- package/lib/utils/file-diff.js +177 -0
- package/lib/utils/fs-utils.js +274 -0
- package/lib/utils/tool-detector.js +383 -0
- package/lib/utils/validation.js +324 -0
- package/lib/value/gate-summary-emitter.js +99 -0
- package/lib/value/metric-contract-loader.js +210 -0
- package/lib/value/risk-evaluator.js +117 -0
- package/lib/value/weekly-snapshot-builder.js +61 -0
- package/lib/version/version-checker.js +156 -0
- package/lib/version/version-manager.js +327 -0
- package/lib/watch/action-executor.js +458 -0
- package/lib/watch/event-debouncer.js +323 -0
- package/lib/watch/execution-logger.js +550 -0
- package/lib/watch/file-watcher.js +499 -0
- package/lib/watch/presets.js +266 -0
- package/lib/watch/watch-manager.js +533 -0
- package/lib/workspace/multi/global-config.js +150 -0
- package/lib/workspace/multi/index.js +22 -0
- package/lib/workspace/multi/path-utils.js +173 -0
- package/lib/workspace/multi/workspace-context-resolver.js +244 -0
- package/lib/workspace/multi/workspace-registry.js +196 -0
- package/lib/workspace/multi/workspace-state-manager.js +537 -0
- package/lib/workspace/multi/workspace.js +90 -0
- package/lib/workspace/workspace-manager.js +370 -0
- package/lib/workspace/workspace-sync.js +356 -0
- package/locales/en.json +114 -0
- package/locales/zh.json +114 -0
- package/package.json +102 -0
- package/template/.kiro/README.md +247 -0
- package/template/.kiro/hooks/check-spec-on-create.kiro.hook +17 -0
- package/template/.kiro/hooks/run-tests-on-save.kiro.hook +13 -0
- package/template/.kiro/hooks/sync-tasks-on-edit.kiro.hook +16 -0
- package/template/.kiro/specs/SPEC_WORKFLOW_GUIDE.md +134 -0
- package/template/.kiro/steering/CORE_PRINCIPLES.md +133 -0
- package/template/.kiro/steering/CURRENT_CONTEXT.md +30 -0
- package/template/.kiro/steering/ENVIRONMENT.md +35 -0
- package/template/.kiro/steering/RULES_GUIDE.md +46 -0
- package/template/.kiro/templates/operations/default/change-impact.md +112 -0
- package/template/.kiro/templates/operations/default/deployment.md +91 -0
- package/template/.kiro/templates/operations/default/feedback-response.md +269 -0
- package/template/.kiro/templates/operations/default/migration-plan.md +172 -0
- package/template/.kiro/templates/operations/default/monitoring.md +135 -0
- package/template/.kiro/templates/operations/default/operations.md +135 -0
- package/template/.kiro/templates/operations/default/rollback.md +143 -0
- package/template/.kiro/templates/operations/default/tools.yaml +364 -0
- package/template/.kiro/templates/operations/default/troubleshooting.md +123 -0
- package/template/.kiro/tools/backup_manager.py +295 -0
- package/template/.kiro/tools/configuration_manager.py +218 -0
- package/template/.kiro/tools/document_evaluator.py +550 -0
- package/template/.kiro/tools/enhancement_logger.py +168 -0
- package/template/.kiro/tools/error_handler.py +335 -0
- package/template/.kiro/tools/improvement_identifier.py +444 -0
- package/template/.kiro/tools/modification_applicator.py +737 -0
- package/template/.kiro/tools/quality_gate_enforcer.py +207 -0
- package/template/.kiro/tools/quality_scorer.py +305 -0
- package/template/.kiro/tools/report_generator.py +154 -0
- package/template/.kiro/tools/ultrawork_enhancer.py +676 -0
- package/template/.kiro/tools/ultrawork_enhancer_refactored.py +0 -0
- package/template/.kiro/tools/ultrawork_enhancer_v2.py +463 -0
- package/template/.kiro/tools/ultrawork_enhancer_v3.py +606 -0
- package/template/.kiro/tools/workflow_quality_gate.py +100 -0
- package/template/README.md +111 -0
|
@@ -0,0 +1,369 @@
|
|
|
1
|
+
# Spec-Level Collaboration Guide
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
The Spec-level collaboration system enables multiple AI instances (Kiro) to work on different Specs in parallel within a large project. This guide explains how to use the collaboration features to coordinate parallel development efforts.
|
|
6
|
+
|
|
7
|
+
## Key Concepts
|
|
8
|
+
|
|
9
|
+
### Master Spec and Sub-Specs
|
|
10
|
+
|
|
11
|
+
- **Master Spec**: A high-level Spec that defines the overall feature and breaks it down into multiple Sub-Specs
|
|
12
|
+
- **Sub-Spec**: A child Spec that implements a specific module or component of the Master Spec
|
|
13
|
+
|
|
14
|
+
### Dependencies
|
|
15
|
+
|
|
16
|
+
Specs can depend on other Specs in three ways:
|
|
17
|
+
|
|
18
|
+
- **requires-completion**: The dependent Spec must be fully completed before this Spec can start
|
|
19
|
+
- **requires-interface**: The dependent Spec must have its interface defined (can be in-progress)
|
|
20
|
+
- **optional**: The dependency is optional and doesn't block progress
|
|
21
|
+
|
|
22
|
+
### Interface Contracts
|
|
23
|
+
|
|
24
|
+
Interface contracts formally define the APIs, data structures, and behaviors that a Spec provides or consumes. They ensure compatibility between independently developed Specs.
|
|
25
|
+
|
|
26
|
+
### Kiro Instances
|
|
27
|
+
|
|
28
|
+
A Kiro instance is an AI assistant working on a specific Spec. You can assign Specs to different instances to enable parallel development.
|
|
29
|
+
|
|
30
|
+
## Quick Start
|
|
31
|
+
|
|
32
|
+
### 1. Initialize a Master Spec
|
|
33
|
+
|
|
34
|
+
Create a Master Spec with Sub-Specs:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
kse collab init user-management \
|
|
38
|
+
--sub-specs user-service auth-service session-manager \
|
|
39
|
+
--dependencies "auth-service:user-service" \
|
|
40
|
+
--dependencies "session-manager:auth-service"
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
This creates:
|
|
44
|
+
- A Master Spec called `user-management`
|
|
45
|
+
- Three Sub-Specs: `user-service`, `auth-service`, `session-manager`
|
|
46
|
+
- Dependencies: `auth-service` depends on `user-service`, `session-manager` depends on `auth-service`
|
|
47
|
+
|
|
48
|
+
### 2. Check Status
|
|
49
|
+
|
|
50
|
+
View all Specs and their status:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
kse collab status
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
View dependency graph:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
kse collab status --graph
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### 3. Assign Specs to Kiro Instances
|
|
63
|
+
|
|
64
|
+
Assign Specs to different AI instances:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
kse collab assign user-service kiro-1
|
|
68
|
+
kse collab assign auth-service kiro-2
|
|
69
|
+
kse collab assign session-manager kiro-3
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### 4. Define Interface Contracts
|
|
73
|
+
|
|
74
|
+
Create an interface contract for a Spec (in `.kiro/specs/{spec-name}/interfaces/`):
|
|
75
|
+
|
|
76
|
+
```json
|
|
77
|
+
{
|
|
78
|
+
"version": "1.0.0",
|
|
79
|
+
"spec": "user-service",
|
|
80
|
+
"interfaces": [
|
|
81
|
+
{
|
|
82
|
+
"name": "UserService",
|
|
83
|
+
"type": "class",
|
|
84
|
+
"exports": [
|
|
85
|
+
{
|
|
86
|
+
"name": "createUser",
|
|
87
|
+
"type": "function",
|
|
88
|
+
"signature": "(userData: UserData) => Promise<User>",
|
|
89
|
+
"required": true
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"name": "getUser",
|
|
93
|
+
"type": "function",
|
|
94
|
+
"signature": "(userId: string) => Promise<User>",
|
|
95
|
+
"required": true
|
|
96
|
+
}
|
|
97
|
+
]
|
|
98
|
+
}
|
|
99
|
+
],
|
|
100
|
+
"types": [
|
|
101
|
+
{
|
|
102
|
+
"name": "UserData",
|
|
103
|
+
"definition": "{ name: string, email: string }"
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"name": "User",
|
|
107
|
+
"definition": "{ id: string, name: string, email: string }"
|
|
108
|
+
}
|
|
109
|
+
]
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### 5. Verify Contracts
|
|
114
|
+
|
|
115
|
+
Verify that implementations match contracts:
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
kse collab verify user-service
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### 6. Run Integration Tests
|
|
122
|
+
|
|
123
|
+
Run integration tests across multiple Specs:
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
kse collab integrate user-service auth-service session-manager
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## Workflow Example
|
|
130
|
+
|
|
131
|
+
### Scenario: Building a User Management System
|
|
132
|
+
|
|
133
|
+
**Step 1: Architect creates Master Spec**
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
kse collab init user-management \
|
|
137
|
+
--sub-specs database-layer user-service auth-service notification-service \
|
|
138
|
+
--dependencies "user-service:database-layer" \
|
|
139
|
+
--dependencies "auth-service:user-service" \
|
|
140
|
+
--dependencies "notification-service:user-service"
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
**Step 2: Check which Specs are ready**
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
kse collab status
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Output:
|
|
150
|
+
```
|
|
151
|
+
Total Specs: 5
|
|
152
|
+
Ready to Start: 1
|
|
153
|
+
|
|
154
|
+
✓ user-management (unassigned)
|
|
155
|
+
○ database-layer (unassigned)
|
|
156
|
+
○ user-service (unassigned)
|
|
157
|
+
○ auth-service (unassigned)
|
|
158
|
+
○ notification-service (unassigned)
|
|
159
|
+
|
|
160
|
+
Ready to start: database-layer
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
**Step 3: Assign and start development**
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
kse collab assign database-layer kiro-1
|
|
167
|
+
kse collab assign user-service kiro-2
|
|
168
|
+
kse collab assign auth-service kiro-3
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
**Step 4: Define interfaces**
|
|
172
|
+
|
|
173
|
+
Each Kiro instance defines the interface contract for their Spec.
|
|
174
|
+
|
|
175
|
+
**Step 5: Verify and integrate**
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
kse collab verify database-layer
|
|
179
|
+
kse collab verify user-service
|
|
180
|
+
kse collab integrate database-layer user-service
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
## Commands Reference
|
|
184
|
+
|
|
185
|
+
### `kse collab init`
|
|
186
|
+
|
|
187
|
+
Initialize a Master Spec with Sub-Specs.
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
kse collab init <master-spec> [options]
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
Options:
|
|
194
|
+
- `-s, --sub-specs <specs...>`: Sub-spec names
|
|
195
|
+
- `-d, --dependencies <deps...>`: Dependencies in format "spec:dep1,dep2"
|
|
196
|
+
|
|
197
|
+
### `kse collab status`
|
|
198
|
+
|
|
199
|
+
Display collaboration status.
|
|
200
|
+
|
|
201
|
+
```bash
|
|
202
|
+
kse collab status [spec-name] [options]
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
Options:
|
|
206
|
+
- `-g, --graph`: Show dependency graph
|
|
207
|
+
- `--critical-path`: Highlight critical path in graph
|
|
208
|
+
|
|
209
|
+
### `kse collab assign`
|
|
210
|
+
|
|
211
|
+
Assign a Spec to a Kiro instance.
|
|
212
|
+
|
|
213
|
+
```bash
|
|
214
|
+
kse collab assign <spec-name> <kiro-instance>
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
### `kse collab verify`
|
|
218
|
+
|
|
219
|
+
Verify interface contracts for a Spec.
|
|
220
|
+
|
|
221
|
+
```bash
|
|
222
|
+
kse collab verify <spec-name>
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
### `kse collab integrate`
|
|
226
|
+
|
|
227
|
+
Run integration tests across Specs.
|
|
228
|
+
|
|
229
|
+
```bash
|
|
230
|
+
kse collab integrate <spec-names...>
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
### `kse collab migrate`
|
|
234
|
+
|
|
235
|
+
Convert a standalone Spec to collaborative mode.
|
|
236
|
+
|
|
237
|
+
```bash
|
|
238
|
+
kse collab migrate <spec-name>
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
## Best Practices
|
|
242
|
+
|
|
243
|
+
### 1. Clear Interface Contracts
|
|
244
|
+
|
|
245
|
+
Define clear, complete interface contracts before starting implementation. This prevents integration issues later.
|
|
246
|
+
|
|
247
|
+
### 2. Minimal Dependencies
|
|
248
|
+
|
|
249
|
+
Keep dependencies minimal and well-justified. Too many dependencies create bottlenecks.
|
|
250
|
+
|
|
251
|
+
### 3. Regular Verification
|
|
252
|
+
|
|
253
|
+
Run `kse collab verify` frequently to catch interface mismatches early.
|
|
254
|
+
|
|
255
|
+
### 4. Integration Testing
|
|
256
|
+
|
|
257
|
+
Write integration tests that span multiple Specs to verify they work together correctly.
|
|
258
|
+
|
|
259
|
+
### 5. Status Updates
|
|
260
|
+
|
|
261
|
+
Update Spec status regularly so other Kiro instances know when dependencies are ready.
|
|
262
|
+
|
|
263
|
+
### 6. Critical Path Awareness
|
|
264
|
+
|
|
265
|
+
Use `kse collab status --graph --critical-path` to identify bottlenecks and prioritize work.
|
|
266
|
+
|
|
267
|
+
## Troubleshooting
|
|
268
|
+
|
|
269
|
+
### Circular Dependency Detected
|
|
270
|
+
|
|
271
|
+
**Error**: `Circular dependency detected: spec-a → spec-b → spec-c → spec-a`
|
|
272
|
+
|
|
273
|
+
**Solution**: Remove one of the dependencies to break the cycle. Redesign the architecture if necessary.
|
|
274
|
+
|
|
275
|
+
### Interface Mismatch
|
|
276
|
+
|
|
277
|
+
**Error**: `Implementation does not match contract for 'UserService'`
|
|
278
|
+
|
|
279
|
+
**Solution**: Update either the implementation or the contract to match. Run `kse collab verify` to see specific mismatches.
|
|
280
|
+
|
|
281
|
+
### Spec Blocked
|
|
282
|
+
|
|
283
|
+
**Error**: `Cannot assign blocked spec (reason: API key missing)`
|
|
284
|
+
|
|
285
|
+
**Solution**: Resolve the blocking issue first, then reassign the Spec.
|
|
286
|
+
|
|
287
|
+
## Advanced Topics
|
|
288
|
+
|
|
289
|
+
### Hierarchical Structures
|
|
290
|
+
|
|
291
|
+
You can create nested structures with Sub-Sub-Specs:
|
|
292
|
+
|
|
293
|
+
```bash
|
|
294
|
+
kse collab init backend-system --sub-specs api-layer business-logic data-layer
|
|
295
|
+
kse collab init api-layer --sub-specs rest-api graphql-api
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
### Breaking Changes
|
|
299
|
+
|
|
300
|
+
When you need to make breaking changes to an interface:
|
|
301
|
+
|
|
302
|
+
1. Version the interface (e.g., `UserServiceV2.json`)
|
|
303
|
+
2. Update consumers to use the new version
|
|
304
|
+
3. Run `kse collab verify` to detect breaking changes
|
|
305
|
+
4. Coordinate with affected Kiro instances
|
|
306
|
+
|
|
307
|
+
### Custom Integration Tests
|
|
308
|
+
|
|
309
|
+
Create integration tests in `.kiro/specs/{master-spec}/integration-tests/`:
|
|
310
|
+
|
|
311
|
+
```javascript
|
|
312
|
+
module.exports = {
|
|
313
|
+
name: 'User Authentication Flow',
|
|
314
|
+
specs: ['user-service', 'auth-service'],
|
|
315
|
+
async setup() {
|
|
316
|
+
// Setup test environment
|
|
317
|
+
},
|
|
318
|
+
async test() {
|
|
319
|
+
const userService = require('../../user-service/lib/user-service');
|
|
320
|
+
const authService = require('../../auth-service/lib/auth-service');
|
|
321
|
+
|
|
322
|
+
// Test cross-spec functionality
|
|
323
|
+
const user = await userService.createUser({ name: 'Test', email: 'test@example.com' });
|
|
324
|
+
const token = await authService.login(user.email, 'password');
|
|
325
|
+
assert(token, 'Should receive auth token');
|
|
326
|
+
},
|
|
327
|
+
async teardown() {
|
|
328
|
+
// Cleanup
|
|
329
|
+
}
|
|
330
|
+
};
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
## Metadata File Format
|
|
334
|
+
|
|
335
|
+
Collaboration metadata is stored in `.kiro/specs/{spec-name}/collaboration.json`:
|
|
336
|
+
|
|
337
|
+
```json
|
|
338
|
+
{
|
|
339
|
+
"version": "1.0.0",
|
|
340
|
+
"type": "master" | "sub",
|
|
341
|
+
"masterSpec": "parent-spec-name",
|
|
342
|
+
"subSpecs": ["child-1", "child-2"],
|
|
343
|
+
"dependencies": [
|
|
344
|
+
{
|
|
345
|
+
"spec": "other-spec",
|
|
346
|
+
"type": "requires-completion",
|
|
347
|
+
"reason": "Needs database schema"
|
|
348
|
+
}
|
|
349
|
+
],
|
|
350
|
+
"assignment": {
|
|
351
|
+
"kiroInstance": "kiro-1",
|
|
352
|
+
"assignedAt": "2026-02-01T10:00:00Z"
|
|
353
|
+
},
|
|
354
|
+
"status": {
|
|
355
|
+
"current": "in-progress",
|
|
356
|
+
"updatedAt": "2026-02-01T10:00:00Z"
|
|
357
|
+
},
|
|
358
|
+
"interfaces": {
|
|
359
|
+
"provides": ["UserService.json"],
|
|
360
|
+
"consumes": ["other-spec/interfaces/DatabaseService.json"]
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
## See Also
|
|
366
|
+
|
|
367
|
+
- [Spec Workflow Guide](../README.md)
|
|
368
|
+
- [Multi-Repository Management](multi-repo-management-guide.md)
|
|
369
|
+
- [Environment Management](environment-management-guide.md)
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
# Spec Locking Guide
|
|
2
|
+
|
|
3
|
+
This guide explains how to use the Spec locking mechanism for multi-user collaboration in kse projects.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
When multiple developers work on the same project, they may accidentally edit the same Spec simultaneously, leading to conflicts. The Spec locking mechanism prevents this by allowing developers to acquire exclusive locks on Specs before editing.
|
|
8
|
+
|
|
9
|
+
## Quick Start
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# Before editing a Spec, acquire a lock
|
|
13
|
+
kse lock acquire my-feature --reason "Implementing user authentication"
|
|
14
|
+
|
|
15
|
+
# Check who has locks on which Specs
|
|
16
|
+
kse lock status
|
|
17
|
+
|
|
18
|
+
# When done editing, release the lock
|
|
19
|
+
kse unlock my-feature
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Commands
|
|
23
|
+
|
|
24
|
+
### Acquire a Lock
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
kse lock acquire <spec-name> [options]
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Options:
|
|
31
|
+
- `--reason <reason>` - Document why you're locking the Spec
|
|
32
|
+
- `--timeout <hours>` - Lock timeout in hours (default: 24)
|
|
33
|
+
|
|
34
|
+
Example:
|
|
35
|
+
```bash
|
|
36
|
+
kse lock acquire 01-00-user-auth --reason "Adding OAuth support" --timeout 48
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Release a Lock
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
kse unlock <spec-name> [options]
|
|
43
|
+
# or
|
|
44
|
+
kse lock release <spec-name> [options]
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Options:
|
|
48
|
+
- `--force` - Release lock even if owned by another machine
|
|
49
|
+
|
|
50
|
+
Example:
|
|
51
|
+
```bash
|
|
52
|
+
kse unlock 01-00-user-auth
|
|
53
|
+
kse unlock 01-00-user-auth --force # Override someone else's lock
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Check Lock Status
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
# View all locked Specs
|
|
60
|
+
kse lock status
|
|
61
|
+
|
|
62
|
+
# View specific Spec lock status
|
|
63
|
+
kse lock status <spec-name>
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Output includes:
|
|
67
|
+
- Lock owner name
|
|
68
|
+
- Machine hostname
|
|
69
|
+
- Lock duration
|
|
70
|
+
- Stale indicator (if lock exceeded timeout)
|
|
71
|
+
- "you" indicator (if you own the lock)
|
|
72
|
+
|
|
73
|
+
### Clean Up Stale Locks
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
kse lock cleanup
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Removes all locks that have exceeded their timeout period. This is useful when:
|
|
80
|
+
- A developer forgot to release their lock
|
|
81
|
+
- A machine crashed while holding a lock
|
|
82
|
+
- Someone left for vacation with an active lock
|
|
83
|
+
|
|
84
|
+
### View Machine Identifier
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
kse lock whoami
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Shows your machine's unique identifier, which is used to track lock ownership.
|
|
91
|
+
|
|
92
|
+
## Integration with Status Command
|
|
93
|
+
|
|
94
|
+
The `kse status` command now shows lock indicators for each Spec:
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
📁 Specs (5)
|
|
98
|
+
|
|
99
|
+
01-00-user-auth 🔒 (you)
|
|
100
|
+
Tasks: 3/10 completed (30%)
|
|
101
|
+
|
|
102
|
+
02-00-api-gateway 🔒 (john)
|
|
103
|
+
Tasks: 5/8 completed (62%)
|
|
104
|
+
|
|
105
|
+
03-00-dashboard
|
|
106
|
+
Tasks: 8/8 completed (100%)
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Lock indicators:
|
|
110
|
+
- 🔒 (you) - You own this lock
|
|
111
|
+
- 🔒 (username) - Another user owns this lock
|
|
112
|
+
- 🔒 [STALE] - Lock has exceeded timeout
|
|
113
|
+
|
|
114
|
+
## Best Practices
|
|
115
|
+
|
|
116
|
+
### 1. Always Lock Before Major Edits
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
# Good practice
|
|
120
|
+
kse lock acquire my-feature --reason "Refactoring task structure"
|
|
121
|
+
# ... make your changes ...
|
|
122
|
+
kse unlock my-feature
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### 2. Use Meaningful Reasons
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
# Good - explains what you're doing
|
|
129
|
+
kse lock acquire api-spec --reason "Adding pagination to list endpoints"
|
|
130
|
+
|
|
131
|
+
# Bad - no context
|
|
132
|
+
kse lock acquire api-spec
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### 3. Release Locks Promptly
|
|
136
|
+
|
|
137
|
+
Don't hold locks longer than necessary. Release as soon as you're done editing.
|
|
138
|
+
|
|
139
|
+
### 4. Check Status Before Starting Work
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
# Check if anyone is working on the Spec
|
|
143
|
+
kse lock status my-feature
|
|
144
|
+
|
|
145
|
+
# If unlocked, acquire and start working
|
|
146
|
+
kse lock acquire my-feature
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### 5. Communicate Before Force Unlocking
|
|
150
|
+
|
|
151
|
+
If you need to force unlock someone else's lock:
|
|
152
|
+
1. Try to contact them first
|
|
153
|
+
2. Check if the lock is stale
|
|
154
|
+
3. Use `--force` only when necessary
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
# Check if stale
|
|
158
|
+
kse lock status their-spec
|
|
159
|
+
|
|
160
|
+
# If stale or confirmed with owner
|
|
161
|
+
kse unlock their-spec --force
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
## Configuration
|
|
165
|
+
|
|
166
|
+
### Lock Timeout
|
|
167
|
+
|
|
168
|
+
Default timeout is 24 hours. You can customize per-lock:
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
kse lock acquire my-spec --timeout 48 # 48 hours
|
|
172
|
+
kse lock acquire quick-fix --timeout 2 # 2 hours
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
### Machine ID Storage
|
|
176
|
+
|
|
177
|
+
Machine IDs are stored in `.kiro/config/machine-id.json` and are automatically generated on first use.
|
|
178
|
+
|
|
179
|
+
## Troubleshooting
|
|
180
|
+
|
|
181
|
+
### "Spec is already locked" Error
|
|
182
|
+
|
|
183
|
+
Someone else is editing this Spec. Options:
|
|
184
|
+
1. Wait for them to finish
|
|
185
|
+
2. Contact them to coordinate
|
|
186
|
+
3. Use `--force` if the lock is stale or abandoned
|
|
187
|
+
|
|
188
|
+
### "Lock owned by different machine" Error
|
|
189
|
+
|
|
190
|
+
You're trying to unlock a Spec locked by another machine. Options:
|
|
191
|
+
1. Use `--force` to override
|
|
192
|
+
2. Contact the lock owner
|
|
193
|
+
|
|
194
|
+
### Stale Locks Accumulating
|
|
195
|
+
|
|
196
|
+
Run periodic cleanup:
|
|
197
|
+
```bash
|
|
198
|
+
kse lock cleanup
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
Consider adding this to your CI/CD pipeline or team workflow.
|
|
202
|
+
|
|
203
|
+
## File Format
|
|
204
|
+
|
|
205
|
+
Lock files are stored as `.kiro/specs/<spec-name>/.lock` with JSON format:
|
|
206
|
+
|
|
207
|
+
```json
|
|
208
|
+
{
|
|
209
|
+
"owner": "John Doe",
|
|
210
|
+
"machineId": "DESKTOP-ABC123-uuid-here",
|
|
211
|
+
"hostname": "DESKTOP-ABC123",
|
|
212
|
+
"timestamp": "2026-02-05T10:30:00.000Z",
|
|
213
|
+
"reason": "Implementing feature X",
|
|
214
|
+
"timeout": 24,
|
|
215
|
+
"version": "1.0.0"
|
|
216
|
+
}
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
Lock files are excluded from version control via `.gitignore`.
|
|
220
|
+
|
|
221
|
+
## See Also
|
|
222
|
+
|
|
223
|
+
- [Team Collaboration Guide](team-collaboration-guide.md)
|
|
224
|
+
- [Spec Workflow](spec-workflow.md)
|
|
225
|
+
- [Command Reference](command-reference.md)
|