@nlaprell/shipit 1.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/.cursor/commands/create_intent_from_issue.md +28 -0
- package/.cursor/commands/create_pr.md +28 -0
- package/.cursor/commands/dashboard.md +39 -0
- package/.cursor/commands/deploy.md +152 -0
- package/.cursor/commands/drift_check.md +36 -0
- package/.cursor/commands/fix.md +39 -0
- package/.cursor/commands/generate_release_plan.md +31 -0
- package/.cursor/commands/generate_roadmap.md +38 -0
- package/.cursor/commands/help.md +37 -0
- package/.cursor/commands/init_project.md +26 -0
- package/.cursor/commands/kill.md +72 -0
- package/.cursor/commands/new_intent.md +68 -0
- package/.cursor/commands/pr.md +77 -0
- package/.cursor/commands/revert-plan.md +58 -0
- package/.cursor/commands/risk.md +64 -0
- package/.cursor/commands/rollback.md +43 -0
- package/.cursor/commands/scope_project.md +53 -0
- package/.cursor/commands/ship.md +345 -0
- package/.cursor/commands/status.md +71 -0
- package/.cursor/commands/suggest.md +44 -0
- package/.cursor/commands/test_shipit.md +197 -0
- package/.cursor/commands/verify.md +50 -0
- package/.cursor/rules/architect.mdc +84 -0
- package/.cursor/rules/assumption-extractor.mdc +95 -0
- package/.cursor/rules/docs.mdc +66 -0
- package/.cursor/rules/implementer.mdc +112 -0
- package/.cursor/rules/pm.mdc +136 -0
- package/.cursor/rules/qa.mdc +97 -0
- package/.cursor/rules/security.mdc +90 -0
- package/.cursor/rules/steward.mdc +99 -0
- package/.cursor/rules/test-runner.mdc +196 -0
- package/AGENTS.md +121 -0
- package/README.md +264 -0
- package/_system/architecture/CANON.md +159 -0
- package/_system/architecture/invariants.yml +87 -0
- package/_system/architecture/project-schema.json +98 -0
- package/_system/architecture/workflow-state-layout.md +68 -0
- package/_system/artifacts/SYSTEM_STATE.md +43 -0
- package/_system/artifacts/confidence-calibration.json +16 -0
- package/_system/artifacts/dependencies.md +46 -0
- package/_system/artifacts/framework-files-manifest.json +179 -0
- package/_system/artifacts/usage.json +1 -0
- package/_system/behaviors/DO_RELEASE.md +371 -0
- package/_system/behaviors/DO_RELEASE_AI.md +329 -0
- package/_system/behaviors/PREPARE_RELEASE.md +373 -0
- package/_system/behaviors/PREPARE_RELEASE_AI.md +234 -0
- package/_system/behaviors/WORK_ROOT_PLATFORM_ISSUES.md +140 -0
- package/_system/behaviors/WORK_TEST_PLAN_ISSUES.md +380 -0
- package/_system/do-not-repeat/abandoned-designs.md +18 -0
- package/_system/do-not-repeat/bad-patterns.md +19 -0
- package/_system/do-not-repeat/failed-experiments.md +18 -0
- package/_system/do-not-repeat/rejected-libraries.md +19 -0
- package/_system/drift/baselines.md +49 -0
- package/_system/drift/metrics.md +33 -0
- package/_system/golden-data/.gitkeep +0 -0
- package/_system/golden-data/README.md +47 -0
- package/_system/reports/mutation/mutation.html +492 -0
- package/_system/security/audit-allowlist.json +4 -0
- package/bin/create-shipit-app +29 -0
- package/bin/shipit +183 -0
- package/cli/src/commands/check.js +82 -0
- package/cli/src/commands/create.js +195 -0
- package/cli/src/commands/init.js +267 -0
- package/cli/src/commands/upgrade.js +196 -0
- package/cli/src/utils/config.js +27 -0
- package/cli/src/utils/file-copy.js +144 -0
- package/cli/src/utils/gitignore-merge.js +44 -0
- package/cli/src/utils/manifest.js +105 -0
- package/cli/src/utils/package-json-merge.js +163 -0
- package/cli/src/utils/project-json-merge.js +57 -0
- package/cli/src/utils/prompts.js +30 -0
- package/cli/src/utils/stack-detection.js +56 -0
- package/cli/src/utils/stack-files.js +364 -0
- package/cli/src/utils/upgrade-backup.js +159 -0
- package/cli/src/utils/version.js +64 -0
- package/dashboard-app/README.md +73 -0
- package/dashboard-app/eslint.config.js +23 -0
- package/dashboard-app/index.html +13 -0
- package/dashboard-app/package.json +30 -0
- package/dashboard-app/pnpm-lock.yaml +2721 -0
- package/dashboard-app/public/dashboard.json +66 -0
- package/dashboard-app/public/vite.svg +1 -0
- package/dashboard-app/src/App.css +141 -0
- package/dashboard-app/src/App.tsx +155 -0
- package/dashboard-app/src/assets/react.svg +1 -0
- package/dashboard-app/src/index.css +68 -0
- package/dashboard-app/src/main.tsx +10 -0
- package/dashboard-app/tsconfig.app.json +28 -0
- package/dashboard-app/tsconfig.json +4 -0
- package/dashboard-app/tsconfig.node.json +26 -0
- package/dashboard-app/vite.config.ts +7 -0
- package/package.json +116 -0
- package/scripts/README.md +70 -0
- package/scripts/audit-check.sh +125 -0
- package/scripts/calibration-report.sh +198 -0
- package/scripts/check-readiness.sh +155 -0
- package/scripts/collect-metrics.sh +116 -0
- package/scripts/command-manifest.yml +131 -0
- package/scripts/create-test-plan-issue.sh +110 -0
- package/scripts/dashboard-start.sh +16 -0
- package/scripts/deploy.sh +170 -0
- package/scripts/drift-check.sh +93 -0
- package/scripts/execute-rollback.sh +177 -0
- package/scripts/export-dashboard-json.js +208 -0
- package/scripts/fix-intents.sh +239 -0
- package/scripts/generate-dashboard.sh +136 -0
- package/scripts/generate-docs.sh +279 -0
- package/scripts/generate-project-context.sh +142 -0
- package/scripts/generate-release-plan.sh +443 -0
- package/scripts/generate-roadmap.sh +189 -0
- package/scripts/generate-system-state.sh +95 -0
- package/scripts/gh/create-intent-from-issue.sh +82 -0
- package/scripts/gh/create-issue-from-intent.sh +59 -0
- package/scripts/gh/create-pr.sh +41 -0
- package/scripts/gh/link-issue.sh +44 -0
- package/scripts/gh/on-ship-update-issue.sh +42 -0
- package/scripts/headless/README.md +8 -0
- package/scripts/headless/call-llm.js +109 -0
- package/scripts/headless/run-phase.sh +99 -0
- package/scripts/help.sh +271 -0
- package/scripts/init-project.sh +976 -0
- package/scripts/kill-intent.sh +125 -0
- package/scripts/lib/common.sh +29 -0
- package/scripts/lib/intent.sh +61 -0
- package/scripts/lib/progress.sh +57 -0
- package/scripts/lib/suggest-next.sh +131 -0
- package/scripts/lib/validate-intents.sh +240 -0
- package/scripts/lib/verify-outputs.sh +55 -0
- package/scripts/lib/workflow_state.sh +201 -0
- package/scripts/new-intent.sh +271 -0
- package/scripts/publish-npm.sh +28 -0
- package/scripts/scope-project.sh +380 -0
- package/scripts/setup-worktrees.sh +125 -0
- package/scripts/status.sh +278 -0
- package/scripts/suggest.sh +173 -0
- package/scripts/test-headless.sh +47 -0
- package/scripts/test-shipit.sh +52 -0
- package/scripts/test-workflow-state.sh +49 -0
- package/scripts/usage-report.sh +47 -0
- package/scripts/usage.sh +58 -0
- package/scripts/validate-cursor.sh +151 -0
- package/scripts/validate-project.sh +71 -0
- package/scripts/validate-vscode.sh +146 -0
- package/scripts/verify.sh +153 -0
- package/scripts/workflow-orchestrator.sh +97 -0
- package/scripts/workflow-templates/01_analysis.md.tpl +25 -0
- package/scripts/workflow-templates/02_plan.md.tpl +30 -0
- package/scripts/workflow-templates/03_implementation.md.tpl +25 -0
- package/scripts/workflow-templates/04_verification.md.tpl +29 -0
- package/scripts/workflow-templates/05_release_notes.md.tpl +16 -0
- package/scripts/workflow-templates/05_verification_legacy.md.tpl +6 -0
- package/scripts/workflow-templates/active.md.tpl +18 -0
- package/scripts/workflow-templates/phases.yml +39 -0
- package/stryker.conf.json +8 -0
- package/work/intent/templates/api-endpoint.md +124 -0
- package/work/intent/templates/bugfix.md +116 -0
- package/work/intent/templates/frontend-feature.md +115 -0
- package/work/intent/templates/generic.md +122 -0
- package/work/intent/templates/infra-change.md +121 -0
- package/work/intent/templates/refactor.md +116 -0
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "Project Metadata Schema",
|
|
4
|
+
"description": "Schema for project.json metadata file",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["name", "version", "techStack", "created"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"name": {
|
|
9
|
+
"type": "string",
|
|
10
|
+
"description": "Project name (alphanumeric, hyphens, underscores)"
|
|
11
|
+
},
|
|
12
|
+
"description": {
|
|
13
|
+
"type": "string",
|
|
14
|
+
"description": "Project description"
|
|
15
|
+
},
|
|
16
|
+
"version": {
|
|
17
|
+
"type": "string",
|
|
18
|
+
"pattern": "^\\d+\\.\\d+\\.\\d+$",
|
|
19
|
+
"description": "Semantic version (e.g., 0.1.0)"
|
|
20
|
+
},
|
|
21
|
+
"techStack": {
|
|
22
|
+
"type": "string",
|
|
23
|
+
"enum": ["typescript-nodejs", "python", "other"],
|
|
24
|
+
"description": "Primary technology stack"
|
|
25
|
+
},
|
|
26
|
+
"created": {
|
|
27
|
+
"type": "string",
|
|
28
|
+
"format": "date-time",
|
|
29
|
+
"description": "ISO 8601 timestamp when project was created"
|
|
30
|
+
},
|
|
31
|
+
"highRiskDomains": {
|
|
32
|
+
"type": "array",
|
|
33
|
+
"items": {
|
|
34
|
+
"type": "string",
|
|
35
|
+
"enum": ["auth", "payments", "permissions", "infrastructure", "pii"]
|
|
36
|
+
},
|
|
37
|
+
"description": "High-risk domains requiring human approval"
|
|
38
|
+
},
|
|
39
|
+
"settings": {
|
|
40
|
+
"type": "object",
|
|
41
|
+
"properties": {
|
|
42
|
+
"humanResponseTime": {
|
|
43
|
+
"type": "string",
|
|
44
|
+
"enum": ["minutes", "hours", "days"],
|
|
45
|
+
"default": "minutes",
|
|
46
|
+
"description": "Expected human response time for interrupts"
|
|
47
|
+
},
|
|
48
|
+
"confidenceThreshold": {
|
|
49
|
+
"type": "number",
|
|
50
|
+
"minimum": 0,
|
|
51
|
+
"maximum": 1,
|
|
52
|
+
"default": 0.7,
|
|
53
|
+
"description": "Minimum confidence score to proceed without human interrupt"
|
|
54
|
+
},
|
|
55
|
+
"testCoverageMinimum": {
|
|
56
|
+
"type": "number",
|
|
57
|
+
"minimum": 0,
|
|
58
|
+
"maximum": 100,
|
|
59
|
+
"default": 80,
|
|
60
|
+
"description": "Minimum test coverage percentage"
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"required": ["humanResponseTime", "confidenceThreshold", "testCoverageMinimum"]
|
|
64
|
+
},
|
|
65
|
+
"dependencies": {
|
|
66
|
+
"type": "object",
|
|
67
|
+
"description": "Project dependencies (runtime and dev)",
|
|
68
|
+
"properties": {
|
|
69
|
+
"runtime": {
|
|
70
|
+
"type": "array",
|
|
71
|
+
"items": { "type": "string" }
|
|
72
|
+
},
|
|
73
|
+
"dev": {
|
|
74
|
+
"type": "array",
|
|
75
|
+
"items": { "type": "string" }
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
"invariants": {
|
|
80
|
+
"type": "object",
|
|
81
|
+
"description": "Project-level invariants",
|
|
82
|
+
"properties": {
|
|
83
|
+
"performance": {
|
|
84
|
+
"type": "object",
|
|
85
|
+
"properties": {
|
|
86
|
+
"p95LatencyMs": { "type": "number" },
|
|
87
|
+
"p99LatencyMs": { "type": "number" },
|
|
88
|
+
"maxMemoryMb": { "type": "number" }
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
"security": {
|
|
92
|
+
"type": "array",
|
|
93
|
+
"items": { "type": "string" }
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Workflow State Layout
|
|
2
|
+
|
|
3
|
+
> **Authority:** This document defines how `work/workflow-state/` is structured. All scripts and features that read or write workflow state MUST follow this contract. See [CANON.md](./CANON.md) for directory boundaries.
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
|
|
7
|
+
Workflow state holds phase outputs (analysis, plan, implementation, verification, release) and supporting artifacts (rollback plan, PR summary, active intent). This layout supports both **single active intent** (flat files) and **multiple active intents** (per-intent directories) so that parallel work does not collide.
|
|
8
|
+
|
|
9
|
+
## Layouts
|
|
10
|
+
|
|
11
|
+
### Flat layout (current / single active intent)
|
|
12
|
+
|
|
13
|
+
When only one intent is active, state lives at the top level of `work/workflow-state/`:
|
|
14
|
+
|
|
15
|
+
- `01_analysis.md`, `02_plan.md`, `03_implementation.md`, `04_verification.md`, `05_release_notes.md`
|
|
16
|
+
- `active.md` — current active intent id (or list; see below)
|
|
17
|
+
- `rollback.md` — rollback plan (output of /revert-plan)
|
|
18
|
+
- `pr.md` — PR summary (output of /pr)
|
|
19
|
+
- `assumptions.md`, `blocked.md`, etc.
|
|
20
|
+
|
|
21
|
+
All consumers (scripts, commands, dashboard export) that read these files use these paths when no per-intent directory exists for the intent in question.
|
|
22
|
+
|
|
23
|
+
### Per-intent layout (multiple active intents)
|
|
24
|
+
|
|
25
|
+
When multiple intents are active (see Planning issue for parallel execution), each intent MAY have its own subdirectory:
|
|
26
|
+
|
|
27
|
+
- `work/workflow-state/<intent-id>/` — e.g. `work/workflow-state/F-001/`, `work/workflow-state/F-002/`
|
|
28
|
+
- Inside: `01_analysis.md`, `02_plan.md`, `03_implementation.md`, `04_verification.md`, `05_release_notes.md`, `rollback.md`, `pr.md` as needed.
|
|
29
|
+
|
|
30
|
+
`work/workflow-state/active.md` (flat only) lists active intent id(s) and optionally current phase per intent. It remains at the top level.
|
|
31
|
+
|
|
32
|
+
### active.md format
|
|
33
|
+
|
|
34
|
+
- **Single active (legacy):** `**Intent ID:** F-001`, `**Status:** active`, `**Current Phase:** Planning`.
|
|
35
|
+
- **Multiple actives:** Same header block (first intent or "none"); plus a section:
|
|
36
|
+
|
|
37
|
+
```markdown
|
|
38
|
+
## Active intents
|
|
39
|
+
|
|
40
|
+
F-001 | Planning | active
|
|
41
|
+
F-002 | Implementation | active
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Scripts parse both the legacy **Intent ID:** line and the `## Active intents` block to list active ids. When multiple intents are active, pass `intent-id` explicitly to `/ship`, `/verify`, and scripts.
|
|
45
|
+
|
|
46
|
+
## Contract: consumers MUST support both layouts
|
|
47
|
+
|
|
48
|
+
**Rule:** Any script or feature that reads or writes workflow state MUST resolve paths so that both layouts work:
|
|
49
|
+
|
|
50
|
+
1. **When an intent-id is known:**
|
|
51
|
+
If `work/workflow-state/<intent-id>/` exists, read/write phase files and intent-specific artifacts (e.g. `rollback.md`, `pr.md`) under `work/workflow-state/<intent-id>/`.
|
|
52
|
+
Otherwise, use the flat paths under `work/workflow-state/` (e.g. `work/workflow-state/rollback.md`).
|
|
53
|
+
|
|
54
|
+
2. **When aggregating (e.g. dashboard, status):**
|
|
55
|
+
If any subdirectories matching `work/workflow-state/[FBT]-[0-9]+/` exist, aggregate state from those directories (and optionally from flat files for backward compatibility).
|
|
56
|
+
Otherwise, read only from flat files.
|
|
57
|
+
|
|
58
|
+
3. **Creation:**
|
|
59
|
+
New workflow state for an intent MAY be written to `work/workflow-state/<intent-id>/` when the workflow supports multiple active intents; otherwise write to flat paths. Do not mix: for a given intent, use either flat or per-intent, not both.
|
|
60
|
+
|
|
61
|
+
## References
|
|
62
|
+
|
|
63
|
+
- **Parallel execution (per-intent dirs):** Implemented per the Planning issue for multiple active intents. This layout doc is the contract those changes and all consumers must follow.
|
|
64
|
+
- **Consumers:** Dashboard export (#62), rollback execution (#64), PR creation (#59), workflow-orchestrator, status, verify — all must resolve paths per this document.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
_Last updated: 2026-02-05_
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# System State
|
|
2
|
+
|
|
3
|
+
**Generated:** 2026-02-04T18:38:19Z
|
|
4
|
+
**Project:** shipit
|
|
5
|
+
|
|
6
|
+
## Global Summary
|
|
7
|
+
|
|
8
|
+
This file provides a global view of the system state for agents to maintain coherence.
|
|
9
|
+
|
|
10
|
+
## Intent Status
|
|
11
|
+
|
|
12
|
+
- **Total:** 0
|
|
13
|
+
- **Active:** 0
|
|
14
|
+
- **Planned:** 0
|
|
15
|
+
- **Shipped:** 0
|
|
16
|
+
|
|
17
|
+
## Current Work
|
|
18
|
+
|
|
19
|
+
- **Active Intent:** none
|
|
20
|
+
- **Recent Intents:**
|
|
21
|
+
|
|
22
|
+
## System Health
|
|
23
|
+
|
|
24
|
+
- **Workflow State:** [Check work/workflow-state/active.md]
|
|
25
|
+
- **Drift Status:** [Check _system/drift/metrics.md]
|
|
26
|
+
- **Test Coverage:** [Run: pnpm test:coverage]
|
|
27
|
+
|
|
28
|
+
## Key Decisions
|
|
29
|
+
|
|
30
|
+
[Recent architectural decisions]
|
|
31
|
+
|
|
32
|
+
## Blockers
|
|
33
|
+
|
|
34
|
+
[Current blockers and dependencies]
|
|
35
|
+
|
|
36
|
+
## Next Actions
|
|
37
|
+
|
|
38
|
+
[Planned next actions]
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
_This file is auto-generated. Run `pnpm generate-system-state` to update._
|
|
43
|
+
_Agents should read this file first to understand global state._
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"decisions": [
|
|
3
|
+
{
|
|
4
|
+
"id": "D-001",
|
|
5
|
+
"stated_confidence": null,
|
|
6
|
+
"actual_outcome": "success",
|
|
7
|
+
"notes": "Intent: F-DUMMY. Tests: pass, Mutation: pass, Audit: pass"
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"id": "D-002",
|
|
11
|
+
"stated_confidence": null,
|
|
12
|
+
"actual_outcome": "success",
|
|
13
|
+
"notes": "Intent: F-DUMMY. Tests: pass, Mutation: pass, Audit: pass"
|
|
14
|
+
}
|
|
15
|
+
]
|
|
16
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Feature Dependency Graph
|
|
2
|
+
|
|
3
|
+
**Generated:** 2026-02-09T20:10:22Z
|
|
4
|
+
|
|
5
|
+
## Dependency Graph
|
|
6
|
+
|
|
7
|
+
### F-DUMMY: F-DUMMY: Dummy intent for testing
|
|
8
|
+
|
|
9
|
+
(no dependencies)
|
|
10
|
+
|
|
11
|
+
### F-001: F-001: Smoke API
|
|
12
|
+
|
|
13
|
+
(no dependencies)
|
|
14
|
+
|
|
15
|
+
### infra-change: F-###: Title
|
|
16
|
+
|
|
17
|
+
└─> (Other intent IDs that must ship first)
|
|
18
|
+
└─> (Infra team or vendor dependencies)
|
|
19
|
+
└─> (Maintenance windows)
|
|
20
|
+
|
|
21
|
+
### api-endpoint: F-###: Title
|
|
22
|
+
|
|
23
|
+
└─> (Other intent IDs that must ship first)
|
|
24
|
+
└─> (ADRs that must be approved)
|
|
25
|
+
└─> (External systems/APIs)
|
|
26
|
+
|
|
27
|
+
### frontend-feature: F-###: Title
|
|
28
|
+
|
|
29
|
+
└─> (Other intent IDs that must ship first)
|
|
30
|
+
└─> (Design/UX sign-off if required)
|
|
31
|
+
|
|
32
|
+
### refactor: F-###: Title
|
|
33
|
+
|
|
34
|
+
└─> (Other intent IDs that must ship first)
|
|
35
|
+
└─> (ADRs or design docs if refactor is architectural)
|
|
36
|
+
|
|
37
|
+
### bugfix: F-###: Title
|
|
38
|
+
|
|
39
|
+
└─> (Other intent IDs that must ship first)
|
|
40
|
+
└─> (Blocking issues or environment requirements)
|
|
41
|
+
|
|
42
|
+
### generic: F-###: Title
|
|
43
|
+
|
|
44
|
+
└─> (Other intent IDs that must ship first)
|
|
45
|
+
└─> (ADRs that must be approved)
|
|
46
|
+
└─> (External systems/APIs)
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "1.1.1",
|
|
3
|
+
"description": "Manifest of framework-owned files and directories that get copied during init/upgrade",
|
|
4
|
+
"userOverrides": {
|
|
5
|
+
"directory": ".override/",
|
|
6
|
+
"description": "User customizations that persist across upgrades. NEVER touched by framework.",
|
|
7
|
+
"neverTouched": true,
|
|
8
|
+
"subdirectories": [
|
|
9
|
+
".override/rules/",
|
|
10
|
+
".override/commands/",
|
|
11
|
+
".override/scripts/",
|
|
12
|
+
".override/config/"
|
|
13
|
+
]
|
|
14
|
+
},
|
|
15
|
+
"backupStrategy": {
|
|
16
|
+
"directory": "._shipit_backup/",
|
|
17
|
+
"format": "<relative-path>/<filename>.<timestamp>",
|
|
18
|
+
"description": "Backups of modified framework files before upgrade replacement"
|
|
19
|
+
},
|
|
20
|
+
"frameworkOwned": {
|
|
21
|
+
"directories": [
|
|
22
|
+
".cursor/commands",
|
|
23
|
+
".cursor/rules",
|
|
24
|
+
"scripts",
|
|
25
|
+
"scripts/lib",
|
|
26
|
+
"scripts/workflow-templates",
|
|
27
|
+
"scripts/gh",
|
|
28
|
+
"_system/architecture",
|
|
29
|
+
"_system/do-not-repeat",
|
|
30
|
+
"_system/drift",
|
|
31
|
+
"_system/behaviors",
|
|
32
|
+
"_system/security",
|
|
33
|
+
"_system/artifacts",
|
|
34
|
+
"_system/golden-data",
|
|
35
|
+
"_system/reports",
|
|
36
|
+
"dashboard-app",
|
|
37
|
+
"work/intent/templates"
|
|
38
|
+
],
|
|
39
|
+
"files": [
|
|
40
|
+
"project.json",
|
|
41
|
+
"AGENTS.md",
|
|
42
|
+
"stryker.conf.json",
|
|
43
|
+
"scripts/command-manifest.yml",
|
|
44
|
+
"scripts/export-dashboard-json.js",
|
|
45
|
+
"scripts/create-test-plan-issue.sh",
|
|
46
|
+
"_system/behaviors/WORK_TEST_PLAN_ISSUES.md",
|
|
47
|
+
".github/workflows/ci.yml"
|
|
48
|
+
],
|
|
49
|
+
"createdOnInit": {
|
|
50
|
+
"directories": [
|
|
51
|
+
"work/intent/features",
|
|
52
|
+
"work/intent/bugs",
|
|
53
|
+
"work/intent/tech-debt",
|
|
54
|
+
"work/workflow-state",
|
|
55
|
+
"work/roadmap",
|
|
56
|
+
"work/release",
|
|
57
|
+
"docs"
|
|
58
|
+
],
|
|
59
|
+
"files": [
|
|
60
|
+
"work/intent/_TEMPLATE.md",
|
|
61
|
+
"work/workflow-state/active.md",
|
|
62
|
+
"work/workflow-state/blocked.md",
|
|
63
|
+
"work/workflow-state/validating.md",
|
|
64
|
+
"work/workflow-state/shipped.md",
|
|
65
|
+
"work/workflow-state/disagreements.md",
|
|
66
|
+
"work/workflow-state/assumptions.md",
|
|
67
|
+
"work/workflow-state/01_analysis.md",
|
|
68
|
+
"work/workflow-state/02_plan.md",
|
|
69
|
+
"work/workflow-state/03_implementation.md",
|
|
70
|
+
"work/workflow-state/04_verification.md",
|
|
71
|
+
"work/workflow-state/05_release_notes.md",
|
|
72
|
+
"work/roadmap/now.md",
|
|
73
|
+
"work/roadmap/next.md",
|
|
74
|
+
"work/roadmap/later.md",
|
|
75
|
+
"_system/architecture/CANON.md",
|
|
76
|
+
"_system/architecture/invariants.yml",
|
|
77
|
+
"_system/do-not-repeat/abandoned-designs.md",
|
|
78
|
+
"_system/do-not-repeat/failed-experiments.md",
|
|
79
|
+
"_system/do-not-repeat/bad-patterns.md",
|
|
80
|
+
"_system/do-not-repeat/rejected-libraries.md",
|
|
81
|
+
"_system/drift/baselines.md",
|
|
82
|
+
"_system/golden-data/.gitkeep",
|
|
83
|
+
"_system/golden-data/README.md",
|
|
84
|
+
"_system/artifacts/confidence-calibration.json",
|
|
85
|
+
"_system/artifacts/usage.json"
|
|
86
|
+
]
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
"userOwned": {
|
|
90
|
+
"description": "Files/directories that should NEVER be overwritten by framework",
|
|
91
|
+
"directories": [
|
|
92
|
+
".override",
|
|
93
|
+
"src",
|
|
94
|
+
"tests",
|
|
95
|
+
"work/intent/features",
|
|
96
|
+
"work/intent/bugs",
|
|
97
|
+
"work/intent/tech-debt",
|
|
98
|
+
"work/roadmap",
|
|
99
|
+
"work/release",
|
|
100
|
+
"work/workflow-state"
|
|
101
|
+
],
|
|
102
|
+
"files": [
|
|
103
|
+
"README.md",
|
|
104
|
+
".gitignore",
|
|
105
|
+
"tsconfig.json",
|
|
106
|
+
"tsconfig.eslint.json",
|
|
107
|
+
"vitest.config.ts",
|
|
108
|
+
".eslintrc.json",
|
|
109
|
+
".prettierrc",
|
|
110
|
+
".npmrc",
|
|
111
|
+
".shipitrc"
|
|
112
|
+
],
|
|
113
|
+
"note": "package.json is user-owned but framework merges scripts/devDependencies. project.json is framework-owned but preserves user edits to name/description/version."
|
|
114
|
+
},
|
|
115
|
+
"stackSpecific": {
|
|
116
|
+
"typescript-nodejs": {
|
|
117
|
+
"files": [
|
|
118
|
+
"package.json",
|
|
119
|
+
"tsconfig.json",
|
|
120
|
+
"tsconfig.eslint.json",
|
|
121
|
+
".eslintrc.json",
|
|
122
|
+
"vitest.config.ts",
|
|
123
|
+
"stryker.conf.json",
|
|
124
|
+
".npmrc"
|
|
125
|
+
],
|
|
126
|
+
"directories": [],
|
|
127
|
+
"description": "Only created for TypeScript/Node.js projects"
|
|
128
|
+
},
|
|
129
|
+
"python": {
|
|
130
|
+
"files": ["pyproject.toml", "requirements.txt"],
|
|
131
|
+
"directories": [],
|
|
132
|
+
"description": "Only created for Python projects (if not already exist)"
|
|
133
|
+
},
|
|
134
|
+
"other": {
|
|
135
|
+
"files": [],
|
|
136
|
+
"directories": [],
|
|
137
|
+
"description": "No stack-specific files created"
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
"neverCopied": {
|
|
141
|
+
"description": "Framework-only files that are NEVER copied to user projects",
|
|
142
|
+
"directories": ["tests"],
|
|
143
|
+
"files": [
|
|
144
|
+
"README.md",
|
|
145
|
+
"CHANGELOG.md",
|
|
146
|
+
"package.json",
|
|
147
|
+
"tsconfig.json",
|
|
148
|
+
".eslintrc.json",
|
|
149
|
+
"vitest.config.ts",
|
|
150
|
+
"tests/TEST_PLAN.md",
|
|
151
|
+
"tests/ISSUES.md",
|
|
152
|
+
"tests/fixtures.json"
|
|
153
|
+
],
|
|
154
|
+
"note": "tests/ directory contains framework test fixtures/templates, not user test structure. User projects have their own tests/ directory."
|
|
155
|
+
},
|
|
156
|
+
"mergeStrategy": {
|
|
157
|
+
"package.json": {
|
|
158
|
+
"action": "merge",
|
|
159
|
+
"description": "Merge ShipIt scripts into existing package.json scripts section, add devDependencies if missing",
|
|
160
|
+
"preserve": ["name", "version", "description", "dependencies", "existing scripts"]
|
|
161
|
+
},
|
|
162
|
+
"project.json": {
|
|
163
|
+
"action": "skipIfExists",
|
|
164
|
+
"description": "If project.json exists, skip creation (user may have customized it)"
|
|
165
|
+
},
|
|
166
|
+
".gitignore": {
|
|
167
|
+
"action": "merge",
|
|
168
|
+
"description": "Append ShipIt patterns if not already present"
|
|
169
|
+
}
|
|
170
|
+
},
|
|
171
|
+
"detection": {
|
|
172
|
+
"shipitAlreadyInstalled": [
|
|
173
|
+
"project.json",
|
|
174
|
+
"_system/architecture/CANON.md",
|
|
175
|
+
"scripts/workflow-orchestrator.sh"
|
|
176
|
+
],
|
|
177
|
+
"description": "If any of these exist, consider ShipIt already initialized"
|
|
178
|
+
}
|
|
179
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{ "entries": [] }
|