@duypham93/openkit 0.2.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/.opencode/README.md +47 -0
- package/.opencode/install-manifest.json +41 -0
- package/.opencode/lib/artifact-scaffolder.js +111 -0
- package/.opencode/lib/contract-consistency.js +218 -0
- package/.opencode/lib/parallel-execution-rules.js +261 -0
- package/.opencode/lib/runtime-paths.js +95 -0
- package/.opencode/lib/runtime-summary.js +82 -0
- package/.opencode/lib/state-guard.js +99 -0
- package/.opencode/lib/task-board-rules.js +375 -0
- package/.opencode/lib/work-item-store.js +280 -0
- package/.opencode/lib/workflow-state-controller.js +1739 -0
- package/.opencode/lib/workflow-state-rules.js +331 -0
- package/.opencode/opencode.json +93 -0
- package/.opencode/package.json +3 -0
- package/.opencode/tests/artifact-scaffolder.test.js +733 -0
- package/.opencode/tests/multi-work-item-runtime.test.js +369 -0
- package/.opencode/tests/parallel-execution-runtime.test.js +259 -0
- package/.opencode/tests/session-start-hook.test.js +357 -0
- package/.opencode/tests/state-guard.test.js +124 -0
- package/.opencode/tests/task-board-rules.test.js +204 -0
- package/.opencode/tests/work-item-store.test.js +380 -0
- package/.opencode/tests/workflow-behavior.test.js +149 -0
- package/.opencode/tests/workflow-contract-consistency.test.js +387 -0
- package/.opencode/tests/workflow-state-cli.test.js +1275 -0
- package/.opencode/tests/workflow-state-controller.test.js +1038 -0
- package/.opencode/work-items/feature-001/state.json +70 -0
- package/.opencode/work-items/index.json +13 -0
- package/.opencode/workflow-state.js +489 -0
- package/.opencode/workflow-state.json +70 -0
- package/AGENTS.md +265 -0
- package/README.md +401 -0
- package/agents/architect-agent.md +63 -0
- package/agents/ba-agent.md +56 -0
- package/agents/code-reviewer.md +77 -0
- package/agents/fullstack-agent.md +115 -0
- package/agents/master-orchestrator.md +60 -0
- package/agents/pm-agent.md +56 -0
- package/agents/qa-agent.md +124 -0
- package/agents/tech-lead-agent.md +60 -0
- package/assets/install-bundle/README.md +7 -0
- package/assets/install-bundle/opencode/README.md +11 -0
- package/assets/install-bundle/opencode/agents/ArchitectAgent.md +63 -0
- package/assets/install-bundle/opencode/agents/BAAgent.md +56 -0
- package/assets/install-bundle/opencode/agents/CodeReviewer.md +77 -0
- package/assets/install-bundle/opencode/agents/FullstackAgent.md +115 -0
- package/assets/install-bundle/opencode/agents/MasterOrchestrator.md +60 -0
- package/assets/install-bundle/opencode/agents/PMAgent.md +56 -0
- package/assets/install-bundle/opencode/agents/QAAgent.md +124 -0
- package/assets/install-bundle/opencode/agents/TechLeadAgent.md +60 -0
- package/assets/install-bundle/opencode/commands/brainstorm.md +44 -0
- package/assets/install-bundle/opencode/commands/delivery.md +45 -0
- package/assets/install-bundle/opencode/commands/execute-plan.md +44 -0
- package/assets/install-bundle/opencode/commands/migrate.md +61 -0
- package/assets/install-bundle/opencode/commands/quick-task.md +45 -0
- package/assets/install-bundle/opencode/commands/task.md +46 -0
- package/assets/install-bundle/opencode/commands/write-plan.md +50 -0
- package/assets/install-bundle/opencode/context/core/lane-selection.md +54 -0
- package/assets/install-bundle/opencode/skills/brainstorming/SKILL.md +51 -0
- package/assets/install-bundle/opencode/skills/code-review/SKILL.md +48 -0
- package/assets/install-bundle/opencode/skills/subagent-driven-development/SKILL.md +79 -0
- package/assets/install-bundle/opencode/skills/systematic-debugging/SKILL.md +61 -0
- package/assets/install-bundle/opencode/skills/test-driven-development/SKILL.md +48 -0
- package/assets/install-bundle/opencode/skills/using-skills/SKILL.md +39 -0
- package/assets/install-bundle/opencode/skills/verification-before-completion/SKILL.md +137 -0
- package/assets/install-bundle/opencode/skills/writing-plans/SKILL.md +68 -0
- package/assets/install-bundle/opencode/skills/writing-specs/SKILL.md +47 -0
- package/assets/opencode.json.template +11 -0
- package/assets/openkit-install.json.template +19 -0
- package/bin/openkit.js +9 -0
- package/commands/brainstorm.md +44 -0
- package/commands/delivery.md +45 -0
- package/commands/execute-plan.md +44 -0
- package/commands/migrate.md +61 -0
- package/commands/quick-task.md +45 -0
- package/commands/task.md +46 -0
- package/commands/write-plan.md +50 -0
- package/context/core/approval-gates.md +146 -0
- package/context/core/code-quality.md +42 -0
- package/context/core/issue-routing.md +85 -0
- package/context/core/lane-selection.md +54 -0
- package/context/core/project-config.md +143 -0
- package/context/core/session-resume.md +85 -0
- package/context/core/workflow-state-schema.md +224 -0
- package/context/core/workflow.md +442 -0
- package/context/navigation.md +94 -0
- package/docs/adr/README.md +6 -0
- package/docs/architecture/2026-03-20-task-intake-dashboard.md +54 -0
- package/docs/architecture/README.md +7 -0
- package/docs/briefs/2026-03-20-task-intake-dashboard.md +48 -0
- package/docs/briefs/README.md +7 -0
- package/docs/governance/README.md +25 -0
- package/docs/governance/adr-policy.md +27 -0
- package/docs/governance/definition-of-done.md +17 -0
- package/docs/governance/naming-conventions.md +21 -0
- package/docs/governance/severity-levels.md +12 -0
- package/docs/maintainer/README.md +51 -0
- package/docs/operations/README.md +79 -0
- package/docs/operations/internal-records/2026-03-24-release-checklist.md +79 -0
- package/docs/operations/internal-records/2026-03-24-simplified-install-ux.md +36 -0
- package/docs/operations/internal-records/README.md +18 -0
- package/docs/operations/runbooks/README.md +23 -0
- package/docs/operations/runbooks/openkit-daily-usage.md +288 -0
- package/docs/operations/runbooks/workflow-state-smoke-tests.md +302 -0
- package/docs/operator/README.md +50 -0
- package/docs/plans/2026-03-20-task-intake-dashboard.md +49 -0
- package/docs/plans/2026-03-21-openkit-full-delivery-multi-task-runtime.md +521 -0
- package/docs/plans/2026-03-23-openkit-global-install-runtime.md +157 -0
- package/docs/plans/README.md +7 -0
- package/docs/qa/2026-03-20-task-intake-dashboard.md +41 -0
- package/docs/qa/README.md +7 -0
- package/docs/specs/2026-03-20-task-intake-dashboard.md +50 -0
- package/docs/specs/2026-03-21-openkit-full-delivery-multi-task-runtime.md +462 -0
- package/docs/specs/README.md +7 -0
- package/docs/templates/README.md +36 -0
- package/docs/templates/adr-template.md +18 -0
- package/docs/templates/architecture-template.md +31 -0
- package/docs/templates/implementation-plan-template.md +32 -0
- package/docs/templates/migration-baseline-checklist.md +48 -0
- package/docs/templates/migration-plan-template.md +52 -0
- package/docs/templates/migration-report-template.md +74 -0
- package/docs/templates/migration-verify-checklist.md +39 -0
- package/docs/templates/product-brief-template.md +32 -0
- package/docs/templates/qa-report-template.md +37 -0
- package/docs/templates/quick-task-template.md +36 -0
- package/docs/templates/spec-template.md +31 -0
- package/hooks/hooks.json +16 -0
- package/hooks/session-start +162 -0
- package/package.json +24 -0
- package/registry.json +328 -0
- package/skills/brainstorming/SKILL.md +51 -0
- package/skills/code-review/SKILL.md +48 -0
- package/skills/subagent-driven-development/SKILL.md +79 -0
- package/skills/systematic-debugging/SKILL.md +61 -0
- package/skills/test-driven-development/SKILL.md +48 -0
- package/skills/using-skills/SKILL.md +39 -0
- package/skills/verification-before-completion/SKILL.md +137 -0
- package/skills/writing-plans/SKILL.md +68 -0
- package/skills/writing-specs/SKILL.md +47 -0
- package/src/audit/vietnamese-detection.js +259 -0
- package/src/cli/commands/detect-vietnamese.js +24 -0
- package/src/cli/commands/doctor.js +33 -0
- package/src/cli/commands/help.js +33 -0
- package/src/cli/commands/init.js +25 -0
- package/src/cli/commands/install-global.js +26 -0
- package/src/cli/commands/install.js +25 -0
- package/src/cli/commands/run.js +63 -0
- package/src/cli/commands/uninstall.js +32 -0
- package/src/cli/commands/upgrade.js +25 -0
- package/src/cli/conflict-output.js +19 -0
- package/src/cli/index.js +56 -0
- package/src/global/doctor.js +101 -0
- package/src/global/ensure-install.js +32 -0
- package/src/global/install-state.js +73 -0
- package/src/global/launcher.js +51 -0
- package/src/global/materialize.js +123 -0
- package/src/global/paths.js +85 -0
- package/src/global/uninstall.js +25 -0
- package/src/global/workspace-state.js +63 -0
- package/src/install/asset-manifest.js +284 -0
- package/src/install/conflicts.js +43 -0
- package/src/install/discovery.js +138 -0
- package/src/install/install-state.js +136 -0
- package/src/install/materialize.js +158 -0
- package/src/install/merge-policy.js +145 -0
- package/src/runtime/doctor.js +281 -0
- package/src/runtime/launcher.js +49 -0
- package/src/runtime/opencode-layering.js +135 -0
- package/src/runtime/openkit-managed-summary.js +27 -0
- package/tests/cli/openkit-cli.test.js +417 -0
- package/tests/global/doctor.test.js +130 -0
- package/tests/global/ensure-install.test.js +105 -0
- package/tests/install/discovery.test.js +124 -0
- package/tests/install/install-state.test.js +346 -0
- package/tests/install/materialize.test.js +244 -0
- package/tests/install/merge-policy.test.js +177 -0
- package/tests/runtime/doctor.test.js +430 -0
- package/tests/runtime/launcher.test.js +230 -0
- package/tests/runtime/module-boundary.test.js +16 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
artifact_type: implementation_plan
|
|
3
|
+
version: 1
|
|
4
|
+
status: draft
|
|
5
|
+
feature_id: FEATURE-000
|
|
6
|
+
feature_slug: example-feature
|
|
7
|
+
source_architecture: docs/architecture/YYYY-MM-DD-example-feature.md
|
|
8
|
+
owner: TechLeadAgent
|
|
9
|
+
approval_gate: tech_lead_to_fullstack
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Implementation Plan: <Feature Name>
|
|
13
|
+
|
|
14
|
+
## Goal
|
|
15
|
+
|
|
16
|
+
- State the implementation outcome this plan must deliver.
|
|
17
|
+
|
|
18
|
+
## Dependencies
|
|
19
|
+
|
|
20
|
+
- List the upstream brief, spec, architecture, commands, or runtime constraints that matter.
|
|
21
|
+
|
|
22
|
+
## Tasks
|
|
23
|
+
|
|
24
|
+
### [ ] Task 1: <Task Name>
|
|
25
|
+
- Files:
|
|
26
|
+
- Goal:
|
|
27
|
+
- Validation:
|
|
28
|
+
- Notes:
|
|
29
|
+
|
|
30
|
+
## Risks
|
|
31
|
+
|
|
32
|
+
## Rollback Notes
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Migration Baseline Checklist
|
|
2
|
+
|
|
3
|
+
Use this checklist during `migration_baseline` to capture the current reality before any meaningful upgrade work starts.
|
|
4
|
+
|
|
5
|
+
## Scope And Invariants
|
|
6
|
+
|
|
7
|
+
- [ ] Migration goal is stated in one sentence.
|
|
8
|
+
- [ ] Target stack or dependency destination is named explicitly.
|
|
9
|
+
- [ ] In-scope surfaces are listed.
|
|
10
|
+
- [ ] Out-of-scope surfaces are listed.
|
|
11
|
+
- [ ] Preserved layout expectations are recorded.
|
|
12
|
+
- [ ] Preserved flows and user journeys are recorded.
|
|
13
|
+
- [ ] Preserved contracts are recorded: API payloads, routes, events, schemas, permissions, storage shapes.
|
|
14
|
+
- [ ] Preserved core logic or business rules are recorded.
|
|
15
|
+
- [ ] Any allowed behavior change is explicitly documented as an exception.
|
|
16
|
+
|
|
17
|
+
## Baseline Evidence
|
|
18
|
+
|
|
19
|
+
- [ ] Current versions of framework, runtime, and critical dependencies are recorded.
|
|
20
|
+
- [ ] Existing build, test, typecheck, lint, codemod, or smoke commands are listed if they exist.
|
|
21
|
+
- [ ] Missing validation tooling is called out honestly if commands do not exist.
|
|
22
|
+
- [ ] Critical screens or flows have baseline screenshots, notes, or equivalent evidence.
|
|
23
|
+
- [ ] Important request/response or contract samples are captured when relevant.
|
|
24
|
+
- [ ] Known warnings, deprecations, and fragile areas are recorded.
|
|
25
|
+
|
|
26
|
+
## Coupling And Blockers
|
|
27
|
+
|
|
28
|
+
- [ ] Framework-coupled hotspots are identified.
|
|
29
|
+
- [ ] Lifecycle, routing, state, fetching, rendering, or side-effect patterns that block upgrade are identified.
|
|
30
|
+
- [ ] Business logic mixed into framework glue is identified.
|
|
31
|
+
- [ ] Candidate seams, adapters, or compatibility shims are listed.
|
|
32
|
+
- [ ] High-risk modules or pages are listed.
|
|
33
|
+
|
|
34
|
+
## Risk And Sequencing Readiness
|
|
35
|
+
|
|
36
|
+
- [ ] Compatibility risks are listed.
|
|
37
|
+
- [ ] Rollback concerns are listed.
|
|
38
|
+
- [ ] Unknowns that require spike or investigation are listed.
|
|
39
|
+
- [ ] The work still fits migration semantics and is not drifting into rewrite or new-feature delivery.
|
|
40
|
+
|
|
41
|
+
## Baseline Exit Gate
|
|
42
|
+
|
|
43
|
+
Baseline is ready for `migration_strategy` only when:
|
|
44
|
+
|
|
45
|
+
- preserved invariants are inspectable
|
|
46
|
+
- baseline evidence is concrete enough to compare later
|
|
47
|
+
- main blockers and likely seams are known
|
|
48
|
+
- the validation path is honest
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
artifact_type: migration_plan
|
|
3
|
+
version: 1
|
|
4
|
+
status: draft
|
|
5
|
+
feature_id: FEATURE-000
|
|
6
|
+
feature_slug: example-migration
|
|
7
|
+
source_architecture: docs/architecture/YYYY-MM-DD-example-migration.md
|
|
8
|
+
owner: TechLeadAgent
|
|
9
|
+
approval_gate: strategy_to_upgrade
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Migration Plan: <Migration Name>
|
|
13
|
+
|
|
14
|
+
## Goal
|
|
15
|
+
|
|
16
|
+
- State the target migration or upgrade outcome and the intended end-state stack.
|
|
17
|
+
|
|
18
|
+
## Preserved Invariants
|
|
19
|
+
|
|
20
|
+
- Layout or presentation details that must remain equivalent.
|
|
21
|
+
- Core flows, contracts, and business logic that must remain equivalent.
|
|
22
|
+
- Explicitly allowed behavior changes, if any.
|
|
23
|
+
|
|
24
|
+
## Baseline Snapshot
|
|
25
|
+
|
|
26
|
+
- Current versions, important dependencies, runtime assumptions, and known fragile areas.
|
|
27
|
+
|
|
28
|
+
## Migration Blockers And Seams
|
|
29
|
+
|
|
30
|
+
- Framework-coupled blockers that make direct upgrade unsafe.
|
|
31
|
+
- Seams, adapters, or compatibility shims to create before or during the migration.
|
|
32
|
+
|
|
33
|
+
## Upgrade Sequence
|
|
34
|
+
|
|
35
|
+
### [ ] Step 1: <Task Name>
|
|
36
|
+
- Files:
|
|
37
|
+
- Goal:
|
|
38
|
+
- Preserve:
|
|
39
|
+
- Seam or adapter work:
|
|
40
|
+
- Validation:
|
|
41
|
+
- Rollback checkpoint:
|
|
42
|
+
- Notes:
|
|
43
|
+
|
|
44
|
+
## Compatibility Risks
|
|
45
|
+
|
|
46
|
+
## Parity Verification
|
|
47
|
+
|
|
48
|
+
- Baseline evidence to compare against after each slice.
|
|
49
|
+
- Critical smoke or regression paths.
|
|
50
|
+
- Manual or automated checks that prove behavior equivalence.
|
|
51
|
+
|
|
52
|
+
## Rollback Notes
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
---
|
|
2
|
+
artifact_type: migration_report
|
|
3
|
+
version: 1
|
|
4
|
+
status: draft
|
|
5
|
+
feature_id: FEATURE-000
|
|
6
|
+
feature_slug: example-migration
|
|
7
|
+
owner: MasterOrchestrator
|
|
8
|
+
source_architecture: docs/architecture/YYYY-MM-DD-example-migration.md
|
|
9
|
+
source_plan: docs/plans/YYYY-MM-DD-example-migration.md
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Migration Report: <Migration Name>
|
|
13
|
+
|
|
14
|
+
## Goal
|
|
15
|
+
|
|
16
|
+
- State the migration objective and the intended target stack.
|
|
17
|
+
|
|
18
|
+
## Preserved Invariants
|
|
19
|
+
|
|
20
|
+
- Layout or presentation expectations that must remain equivalent.
|
|
21
|
+
- Core flows, contracts, and business logic that must remain equivalent.
|
|
22
|
+
- Explicitly allowed behavior changes, if any.
|
|
23
|
+
|
|
24
|
+
## Baseline Snapshot
|
|
25
|
+
|
|
26
|
+
- Current versions and critical dependency state.
|
|
27
|
+
- Existing validation commands, or a note that they do not exist.
|
|
28
|
+
- Baseline screenshots, notes, request/response samples, or equivalent evidence.
|
|
29
|
+
- Known warnings, deprecations, or fragile areas.
|
|
30
|
+
|
|
31
|
+
## Migration Blockers And Seams
|
|
32
|
+
|
|
33
|
+
- Framework-coupled blockers that make direct upgrade unsafe.
|
|
34
|
+
- Candidate seams, adapters, or compatibility shims.
|
|
35
|
+
- High-risk modules, pages, or integration points.
|
|
36
|
+
|
|
37
|
+
## Strategy
|
|
38
|
+
|
|
39
|
+
- Chosen migration approach.
|
|
40
|
+
- Slice order and rollback checkpoints.
|
|
41
|
+
- Validation approach for each slice.
|
|
42
|
+
|
|
43
|
+
## Execution Log
|
|
44
|
+
|
|
45
|
+
### Slice 1: <Task Name>
|
|
46
|
+
- Goal:
|
|
47
|
+
- Files or surfaces touched:
|
|
48
|
+
- Seam or adapter work:
|
|
49
|
+
- Upgrade work:
|
|
50
|
+
- Validation:
|
|
51
|
+
- Result:
|
|
52
|
+
- Rollback note:
|
|
53
|
+
|
|
54
|
+
## Verification Summary
|
|
55
|
+
|
|
56
|
+
- Versions actually landed.
|
|
57
|
+
- Parity checks completed.
|
|
58
|
+
- Manual and automated evidence.
|
|
59
|
+
- Remaining adapters or shims.
|
|
60
|
+
|
|
61
|
+
## Issues And Risks
|
|
62
|
+
|
|
63
|
+
### ISSUE-001: <Title>
|
|
64
|
+
- Type:
|
|
65
|
+
- Severity:
|
|
66
|
+
- Rooted In:
|
|
67
|
+
- Recommendation:
|
|
68
|
+
- Evidence:
|
|
69
|
+
|
|
70
|
+
## Conclusion
|
|
71
|
+
|
|
72
|
+
- Overall migration status: PASS | FAIL | PARTIAL
|
|
73
|
+
- Ready for `migration_done`: yes | no
|
|
74
|
+
- Follow-up cleanup or escalation notes.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Migration Verify Checklist
|
|
2
|
+
|
|
3
|
+
Use this checklist during `migration_verify` to judge whether the upgraded system still preserves the intended behavior under the new stack.
|
|
4
|
+
|
|
5
|
+
## Upgrade Outcome
|
|
6
|
+
|
|
7
|
+
- [ ] Target framework or dependency versions match the migration goal.
|
|
8
|
+
- [ ] Planned upgrade slices were completed or deferred explicitly.
|
|
9
|
+
- [ ] Temporary adapters or shims still present are listed with follow-up intent.
|
|
10
|
+
|
|
11
|
+
## Parity Checks
|
|
12
|
+
|
|
13
|
+
- [ ] Preserved layout expectations still hold.
|
|
14
|
+
- [ ] Preserved user flows still hold.
|
|
15
|
+
- [ ] Preserved contracts still hold: API payloads, routes, events, schemas, permissions, storage shapes.
|
|
16
|
+
- [ ] Preserved core logic or business rules still hold.
|
|
17
|
+
- [ ] Any approved exception is still the only intentional behavior difference.
|
|
18
|
+
|
|
19
|
+
## Validation Evidence
|
|
20
|
+
|
|
21
|
+
- [ ] Build, test, typecheck, lint, codemod, or smoke evidence is recorded when tooling exists.
|
|
22
|
+
- [ ] Manual regression evidence is recorded for flows not covered by automation.
|
|
23
|
+
- [ ] Before/after screenshots, notes, or equivalent parity evidence are attached or referenced when relevant.
|
|
24
|
+
- [ ] Performance or runtime warnings introduced by the migration are recorded when relevant.
|
|
25
|
+
|
|
26
|
+
## Issue Classification
|
|
27
|
+
|
|
28
|
+
- [ ] Remaining defects are classified as implementation fallout, migration-strategy flaw, or requirement ambiguity.
|
|
29
|
+
- [ ] Open risks and deferred items are listed.
|
|
30
|
+
- [ ] Escalation to `full` is recommended if the issue is no longer primarily a technical migration problem.
|
|
31
|
+
|
|
32
|
+
## Verify Exit Gate
|
|
33
|
+
|
|
34
|
+
Migration is ready for `migration_done` only when:
|
|
35
|
+
|
|
36
|
+
- parity evidence is inspectable
|
|
37
|
+
- remaining issues are resolved or explicitly routed
|
|
38
|
+
- rollback and residual-risk notes are clear
|
|
39
|
+
- `migration_verified` can be approved honestly
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
artifact_type: product_brief
|
|
3
|
+
version: 1
|
|
4
|
+
status: draft
|
|
5
|
+
feature_id: FEATURE-000
|
|
6
|
+
feature_slug: example-feature
|
|
7
|
+
source_request: "Link or quote the originating user request"
|
|
8
|
+
owner: PMAgent
|
|
9
|
+
approval_gate: pm_to_ba
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Product Brief: <Feature Name>
|
|
13
|
+
|
|
14
|
+
## Goal
|
|
15
|
+
|
|
16
|
+
## Target Users
|
|
17
|
+
|
|
18
|
+
## Problem Statement
|
|
19
|
+
|
|
20
|
+
## High-Level Features
|
|
21
|
+
- [ ]
|
|
22
|
+
|
|
23
|
+
## Priorities
|
|
24
|
+
- P0:
|
|
25
|
+
- P1:
|
|
26
|
+
- P2:
|
|
27
|
+
|
|
28
|
+
## Success Metrics
|
|
29
|
+
|
|
30
|
+
## Out of Scope
|
|
31
|
+
|
|
32
|
+
## Open Questions
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
artifact_type: qa_report
|
|
3
|
+
version: 1
|
|
4
|
+
status: draft
|
|
5
|
+
feature_id: FEATURE-000
|
|
6
|
+
feature_slug: example-feature
|
|
7
|
+
source_plan: docs/plans/YYYY-MM-DD-example-feature.md
|
|
8
|
+
owner: QAAgent
|
|
9
|
+
approval_gate: qa_to_done
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# QA Report: <Feature Name>
|
|
13
|
+
|
|
14
|
+
## Overall Status
|
|
15
|
+
- PASS | FAIL
|
|
16
|
+
|
|
17
|
+
## Spec Compliance
|
|
18
|
+
|
|
19
|
+
| Acceptance Criteria | Result | Notes |
|
|
20
|
+
| --- | --- | --- |
|
|
21
|
+
| | | |
|
|
22
|
+
|
|
23
|
+
## Quality Checks
|
|
24
|
+
|
|
25
|
+
## Test Evidence
|
|
26
|
+
|
|
27
|
+
## Issues
|
|
28
|
+
|
|
29
|
+
### ISSUE-001: <Title>
|
|
30
|
+
- Type:
|
|
31
|
+
- Severity:
|
|
32
|
+
- Rooted In:
|
|
33
|
+
- Recommended Owner:
|
|
34
|
+
- Evidence:
|
|
35
|
+
- Recommendation:
|
|
36
|
+
|
|
37
|
+
## Conclusion
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
artifact_type: quick_task_card
|
|
3
|
+
version: 1
|
|
4
|
+
status: draft
|
|
5
|
+
feature_id: TASK-000
|
|
6
|
+
feature_slug: example-task
|
|
7
|
+
owner: MasterOrchestrator
|
|
8
|
+
mode: quick
|
|
9
|
+
approval_gate: quick_verified
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Quick Task: <Task Name>
|
|
13
|
+
|
|
14
|
+
## Goal
|
|
15
|
+
|
|
16
|
+
- State the smallest useful outcome this quick task must achieve.
|
|
17
|
+
|
|
18
|
+
## Scope
|
|
19
|
+
|
|
20
|
+
- List the files, surfaces, or boundaries this task is allowed to touch.
|
|
21
|
+
|
|
22
|
+
## Acceptance Bullets
|
|
23
|
+
- [ ]
|
|
24
|
+
|
|
25
|
+
## Risk Note
|
|
26
|
+
|
|
27
|
+
## Verification Path
|
|
28
|
+
|
|
29
|
+
- Record the real command or manual check that will be used.
|
|
30
|
+
|
|
31
|
+
## Touched Files
|
|
32
|
+
-
|
|
33
|
+
|
|
34
|
+
## Verification Result
|
|
35
|
+
|
|
36
|
+
## Escalation Note
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
artifact_type: specification
|
|
3
|
+
version: 1
|
|
4
|
+
status: draft
|
|
5
|
+
feature_id: FEATURE-000
|
|
6
|
+
feature_slug: example-feature
|
|
7
|
+
source_brief: docs/briefs/YYYY-MM-DD-example-feature.md
|
|
8
|
+
owner: BAAgent
|
|
9
|
+
approval_gate: ba_to_architect
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Spec: <Feature Name>
|
|
13
|
+
|
|
14
|
+
## Summary
|
|
15
|
+
|
|
16
|
+
## User Stories
|
|
17
|
+
|
|
18
|
+
### US-001: <Title>
|
|
19
|
+
As a <user type>, I want <action>, so that <benefit>.
|
|
20
|
+
|
|
21
|
+
**Acceptance Criteria**
|
|
22
|
+
- Given ... When ... Then ...
|
|
23
|
+
|
|
24
|
+
**Edge Cases**
|
|
25
|
+
-
|
|
26
|
+
|
|
27
|
+
## Non-Functional Requirements
|
|
28
|
+
|
|
29
|
+
## Out of Scope
|
|
30
|
+
|
|
31
|
+
## Open Questions
|
package/hooks/hooks.json
ADDED
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
# This script runs when an AI session starts.
|
|
4
|
+
# It teaches the agent how to use the Skills library by injecting the meta-skill.
|
|
5
|
+
|
|
6
|
+
set -e
|
|
7
|
+
|
|
8
|
+
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
9
|
+
KIT_ROOT="${OPENKIT_KIT_ROOT:-$(dirname "$DIR")}"
|
|
10
|
+
PROJECT_ROOT="${OPENKIT_PROJECT_ROOT:-$(pwd)}"
|
|
11
|
+
META_SKILL_PATH="$KIT_ROOT/skills/using-skills/SKILL.md"
|
|
12
|
+
STATE_PATH="${OPENKIT_WORKFLOW_STATE:-$PROJECT_ROOT/.opencode/workflow-state.json}"
|
|
13
|
+
MANIFEST_PATH="$KIT_ROOT/.opencode/opencode.json"
|
|
14
|
+
PYTHON_BIN="${OPENKIT_PYTHON_BIN:-python3}"
|
|
15
|
+
RUNTIME_SUMMARY_MODULE="$KIT_ROOT/.opencode/lib/runtime-summary.js"
|
|
16
|
+
|
|
17
|
+
KIT_NAME="OpenKit AI Software Factory"
|
|
18
|
+
KIT_VERSION="unknown"
|
|
19
|
+
ENTRY_AGENT="unknown"
|
|
20
|
+
JSON_HELPER_STATUS="ok"
|
|
21
|
+
|
|
22
|
+
if [ -f "$MANIFEST_PATH" ] && command -v "$PYTHON_BIN" >/dev/null 2>&1; then
|
|
23
|
+
KIT_INFO_RAW=$("$PYTHON_BIN" - "$MANIFEST_PATH" <<'PY' || true
|
|
24
|
+
import json
|
|
25
|
+
import sys
|
|
26
|
+
|
|
27
|
+
manifest_path = sys.argv[1]
|
|
28
|
+
|
|
29
|
+
try:
|
|
30
|
+
with open(manifest_path, "r", encoding="utf-8") as fh:
|
|
31
|
+
manifest = json.load(fh)
|
|
32
|
+
except Exception:
|
|
33
|
+
sys.exit(0)
|
|
34
|
+
|
|
35
|
+
kit = manifest.get("kit") or {}
|
|
36
|
+
print(kit.get("name", "OpenKit AI Software Factory"))
|
|
37
|
+
print(kit.get("version", "unknown"))
|
|
38
|
+
print(kit.get("entryAgent", "unknown"))
|
|
39
|
+
PY
|
|
40
|
+
)
|
|
41
|
+
KIT_INFO_1=$(printf '%s\n' "$KIT_INFO_RAW" | sed -n '1p')
|
|
42
|
+
KIT_INFO_2=$(printf '%s\n' "$KIT_INFO_RAW" | sed -n '2p')
|
|
43
|
+
KIT_INFO_3=$(printf '%s\n' "$KIT_INFO_RAW" | sed -n '3p')
|
|
44
|
+
if [ -n "$KIT_INFO_1" ] && [ -n "$KIT_INFO_2" ] && [ -n "$KIT_INFO_3" ]; then
|
|
45
|
+
KIT_NAME="$KIT_INFO_1"
|
|
46
|
+
KIT_VERSION="$KIT_INFO_2"
|
|
47
|
+
ENTRY_AGENT="$KIT_INFO_3"
|
|
48
|
+
else
|
|
49
|
+
JSON_HELPER_STATUS="degraded"
|
|
50
|
+
fi
|
|
51
|
+
elif [ -f "$MANIFEST_PATH" ]; then
|
|
52
|
+
JSON_HELPER_STATUS="degraded"
|
|
53
|
+
fi
|
|
54
|
+
|
|
55
|
+
if [ -n "${OPENKIT_SESSION_START_NO_SKILL:-}" ]; then
|
|
56
|
+
SKILL_STATUS="skipped"
|
|
57
|
+
elif [ -f "$META_SKILL_PATH" ]; then
|
|
58
|
+
SKILL_STATUS="loaded"
|
|
59
|
+
else
|
|
60
|
+
SKILL_STATUS="missing"
|
|
61
|
+
fi
|
|
62
|
+
|
|
63
|
+
echo "<openkit_runtime_status>"
|
|
64
|
+
echo "kit: $KIT_NAME v$KIT_VERSION"
|
|
65
|
+
echo "entry agent: $ENTRY_AGENT"
|
|
66
|
+
echo "state file: $STATE_PATH"
|
|
67
|
+
echo "startup skill: $SKILL_STATUS"
|
|
68
|
+
echo "json helper: $JSON_HELPER_STATUS"
|
|
69
|
+
echo "help: node .opencode/workflow-state.js status"
|
|
70
|
+
echo "doctor: node .opencode/workflow-state.js doctor"
|
|
71
|
+
echo "show: node .opencode/workflow-state.js show"
|
|
72
|
+
echo "</openkit_runtime_status>"
|
|
73
|
+
|
|
74
|
+
if [ -z "${OPENKIT_SESSION_START_NO_SKILL:-}" ] && [ -f "$META_SKILL_PATH" ]; then
|
|
75
|
+
echo "<skill_system_instruction>"
|
|
76
|
+
echo "You are running within the Open Kit AI Software Factory framework."
|
|
77
|
+
echo "Below are the rules for how you must discover and invoke your skills."
|
|
78
|
+
echo ""
|
|
79
|
+
cat "$META_SKILL_PATH"
|
|
80
|
+
echo "</skill_system_instruction>"
|
|
81
|
+
fi
|
|
82
|
+
|
|
83
|
+
if [ -f "$STATE_PATH" ] && [ "$JSON_HELPER_STATUS" = "ok" ] && command -v "$PYTHON_BIN" >/dev/null 2>&1; then
|
|
84
|
+
"$PYTHON_BIN" - "$STATE_PATH" "$RUNTIME_SUMMARY_MODULE" <<'PY' || true
|
|
85
|
+
import json
|
|
86
|
+
import os
|
|
87
|
+
import pathlib
|
|
88
|
+
import subprocess
|
|
89
|
+
import sys
|
|
90
|
+
|
|
91
|
+
state_path = sys.argv[1]
|
|
92
|
+
runtime_summary_module = sys.argv[2]
|
|
93
|
+
runtime_root = str(pathlib.Path(state_path).resolve().parents[1])
|
|
94
|
+
|
|
95
|
+
try:
|
|
96
|
+
with open(state_path, "r", encoding="utf-8") as fh:
|
|
97
|
+
state = json.load(fh)
|
|
98
|
+
except Exception:
|
|
99
|
+
sys.exit(0)
|
|
100
|
+
|
|
101
|
+
mode = state.get("mode")
|
|
102
|
+
stage = state.get("current_stage")
|
|
103
|
+
status = state.get("status")
|
|
104
|
+
owner = state.get("current_owner")
|
|
105
|
+
feature_id = state.get("feature_id")
|
|
106
|
+
feature_slug = state.get("feature_slug")
|
|
107
|
+
work_item_id = state.get("work_item_id")
|
|
108
|
+
|
|
109
|
+
if not all([mode, stage, status, owner]):
|
|
110
|
+
sys.exit(0)
|
|
111
|
+
|
|
112
|
+
task_summary = None
|
|
113
|
+
active_tasks = []
|
|
114
|
+
|
|
115
|
+
if mode == "full" and work_item_id:
|
|
116
|
+
try:
|
|
117
|
+
node_cmd = [
|
|
118
|
+
"node",
|
|
119
|
+
"-e",
|
|
120
|
+
(
|
|
121
|
+
"const { getRuntimeContext } = require(process.argv[1]);"
|
|
122
|
+
"const context = getRuntimeContext(process.argv[2], JSON.parse(process.argv[3]));"
|
|
123
|
+
"process.stdout.write(JSON.stringify(context));"
|
|
124
|
+
),
|
|
125
|
+
runtime_summary_module,
|
|
126
|
+
runtime_root,
|
|
127
|
+
json.dumps(state),
|
|
128
|
+
]
|
|
129
|
+
result = subprocess.run(node_cmd, check=True, capture_output=True, text=True)
|
|
130
|
+
runtime_context = json.loads(result.stdout.strip() or "{}")
|
|
131
|
+
board_summary = runtime_context.get("taskBoardSummary")
|
|
132
|
+
if board_summary:
|
|
133
|
+
task_summary = (
|
|
134
|
+
f"task board: {board_summary.get('total', 0)} tasks | "
|
|
135
|
+
f"ready {board_summary.get('ready', 0)} | active {board_summary.get('active', 0)}"
|
|
136
|
+
)
|
|
137
|
+
active_tasks = board_summary.get("activeTasks") or []
|
|
138
|
+
except Exception:
|
|
139
|
+
task_summary = None
|
|
140
|
+
active_tasks = []
|
|
141
|
+
|
|
142
|
+
print("<workflow_resume_hint>")
|
|
143
|
+
print("OpenKit workflow resume context detected.")
|
|
144
|
+
print(f"mode: {mode}")
|
|
145
|
+
print(f"stage: {stage}")
|
|
146
|
+
print(f"status: {status}")
|
|
147
|
+
print(f"owner: {owner}")
|
|
148
|
+
if feature_id and feature_slug:
|
|
149
|
+
print(f"work item: {feature_id} ({feature_slug})")
|
|
150
|
+
if work_item_id:
|
|
151
|
+
print(f"active work item id: {work_item_id}")
|
|
152
|
+
if task_summary:
|
|
153
|
+
print(task_summary)
|
|
154
|
+
if active_tasks:
|
|
155
|
+
print(f"active tasks: {'; '.join(active_tasks)}")
|
|
156
|
+
print("Read first: AGENTS.md -> context/navigation.md -> context/core/workflow.md -> .opencode/workflow-state.json")
|
|
157
|
+
print("Then load resume guidance from context/core/session-resume.md.")
|
|
158
|
+
if mode == "full" and active_tasks:
|
|
159
|
+
print("Parallel task support is not yet assumed safe by this hook; confirm with `node .opencode/workflow-state.js doctor` before relying on it.")
|
|
160
|
+
print("</workflow_resume_hint>")
|
|
161
|
+
PY
|
|
162
|
+
fi
|
package/package.json
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@duypham93/openkit",
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"files": [
|
|
6
|
+
".opencode/",
|
|
7
|
+
"agents/",
|
|
8
|
+
"assets/",
|
|
9
|
+
"bin/",
|
|
10
|
+
"commands/",
|
|
11
|
+
"context/",
|
|
12
|
+
"docs/",
|
|
13
|
+
"hooks/",
|
|
14
|
+
"skills/",
|
|
15
|
+
"src/",
|
|
16
|
+
"tests/",
|
|
17
|
+
"AGENTS.md",
|
|
18
|
+
"README.md",
|
|
19
|
+
"registry.json"
|
|
20
|
+
],
|
|
21
|
+
"bin": {
|
|
22
|
+
"openkit": "bin/openkit.js"
|
|
23
|
+
}
|
|
24
|
+
}
|