forgedev 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +57 -10
- package/bin/chainproof.js +126 -0
- package/package.json +25 -7
- package/src/chainproof-bridge.js +330 -0
- package/src/ci-mode.js +85 -0
- package/src/claude-configurator.js +86 -49
- package/src/cli.js +30 -7
- package/src/composer.js +159 -34
- package/src/doctor-checks-chainproof.js +106 -0
- package/src/doctor-checks.js +39 -20
- package/src/doctor-prompts.js +9 -9
- package/src/doctor.js +37 -4
- package/src/guided.js +3 -3
- package/src/index.js +31 -10
- package/src/init-mode.js +64 -11
- package/src/menu.js +178 -0
- package/src/prompts.js +5 -12
- package/src/recommender.js +134 -10
- package/src/scanner.js +57 -2
- package/src/uat-generator.js +204 -189
- package/src/update-check.js +9 -4
- package/src/update.js +1 -1
- package/src/utils.js +64 -5
- package/templates/ai/guardrails-py/backend/app/ai/__init__.py +29 -0
- package/templates/ai/guardrails-py/backend/app/ai/audit_log.py +133 -0
- package/templates/ai/guardrails-py/backend/app/ai/client.py.template +323 -0
- package/templates/ai/guardrails-py/backend/app/ai/health.py.template +157 -0
- package/templates/ai/guardrails-py/backend/app/ai/input_guard.py +98 -0
- package/templates/ai/guardrails-ts/src/lib/ai/audit-log.ts.template +164 -0
- package/templates/ai/guardrails-ts/src/lib/ai/client.ts.template +403 -0
- package/templates/ai/guardrails-ts/src/lib/ai/health.ts.template +165 -0
- package/templates/ai/guardrails-ts/src/lib/ai/index.ts.template +17 -0
- package/templates/ai/guardrails-ts/src/lib/ai/input-guard.ts.template +124 -0
- package/templates/auth/nextauth/src/lib/auth.ts.template +12 -7
- package/templates/backend/express/Dockerfile.template +18 -0
- package/templates/backend/express/package.json.template +33 -0
- package/templates/backend/express/src/index.ts.template +34 -0
- package/templates/backend/express/src/routes/health.ts.template +27 -0
- package/templates/backend/express/tsconfig.json +17 -0
- package/templates/backend/fastapi/backend/Dockerfile.template +5 -0
- package/templates/backend/fastapi/backend/app/api/health.py.template +1 -1
- package/templates/backend/fastapi/backend/app/core/config.py.template +1 -1
- package/templates/backend/fastapi/backend/app/core/errors.py +1 -1
- package/templates/backend/fastapi/backend/app/main.py.template +3 -1
- package/templates/backend/fastapi/backend/requirements.txt.template +2 -0
- package/templates/backend/hono/Dockerfile.template +18 -0
- package/templates/backend/hono/package.json.template +31 -0
- package/templates/backend/hono/src/index.ts.template +32 -0
- package/templates/backend/hono/src/routes/health.ts.template +27 -0
- package/templates/backend/hono/tsconfig.json +18 -0
- package/templates/base/docs/uat/UAT_TEMPLATE.md.template +1 -1
- package/templates/chainproof/base/.chainproof/config.json.template +11 -0
- package/templates/chainproof/base/.chainproof/mcp-server.mjs +310 -0
- package/templates/chainproof/base/.mcp.json +9 -0
- package/templates/chainproof/fastapi/.chainproof/middleware.json.template +14 -0
- package/templates/chainproof/nextjs/.chainproof/hooks.json.template +19 -0
- package/templates/chainproof/polyglot/.chainproof/config.json.template +21 -0
- package/templates/claude-code/agents/architect.md +25 -11
- package/templates/claude-code/agents/build-error-resolver.md +19 -5
- package/templates/claude-code/agents/chief-of-staff.md +42 -8
- package/templates/claude-code/agents/code-quality-reviewer.md +14 -0
- package/templates/claude-code/agents/database-reviewer.md +15 -1
- package/templates/claude-code/agents/deep-reviewer.md +191 -0
- package/templates/claude-code/agents/doc-updater.md +19 -5
- package/templates/claude-code/agents/docs-lookup.md +19 -5
- package/templates/claude-code/agents/e2e-runner.md +26 -12
- package/templates/claude-code/agents/enforcement-gate.md +102 -0
- package/templates/claude-code/agents/frontend-builder.md +188 -0
- package/templates/claude-code/agents/harness-optimizer.md +36 -1
- package/templates/claude-code/agents/loop-operator.md +27 -13
- package/templates/claude-code/agents/planner.md +21 -7
- package/templates/claude-code/agents/product-strategist.md +24 -10
- package/templates/claude-code/agents/production-readiness.md +14 -0
- package/templates/claude-code/agents/prompt-auditor.md +115 -0
- package/templates/claude-code/agents/refactor-cleaner.md +22 -8
- package/templates/claude-code/agents/security-reviewer.md +14 -0
- package/templates/claude-code/agents/spec-validator.md +15 -1
- package/templates/claude-code/agents/tdd-guide.md +21 -7
- package/templates/claude-code/agents/uat-validator.md +14 -0
- package/templates/claude-code/claude-md/base.md +14 -7
- package/templates/claude-code/claude-md/fastapi.md +8 -8
- package/templates/claude-code/claude-md/fullstack.md +6 -6
- package/templates/claude-code/claude-md/hono.md +18 -0
- package/templates/claude-code/claude-md/nextjs.md +5 -5
- package/templates/claude-code/claude-md/remix.md +18 -0
- package/templates/claude-code/commands/audit-security.md +14 -0
- package/templates/claude-code/commands/audit-spec.md +14 -0
- package/templates/claude-code/commands/audit-wiring.md +14 -0
- package/templates/claude-code/commands/build-fix.md +28 -0
- package/templates/claude-code/commands/build-ui.md +59 -0
- package/templates/claude-code/commands/code-review.md +53 -31
- package/templates/claude-code/commands/fix-loop.md +211 -0
- package/templates/claude-code/commands/full-audit.md +36 -8
- package/templates/claude-code/commands/generate-prd.md +1 -1
- package/templates/claude-code/commands/generate-sdd.md +74 -0
- package/templates/claude-code/commands/generate-uat.md +107 -35
- package/templates/claude-code/commands/help.md +68 -0
- package/templates/claude-code/commands/live-uat.md +268 -0
- package/templates/claude-code/commands/optimize-claude-md.md +15 -1
- package/templates/claude-code/commands/plan.md +3 -3
- package/templates/claude-code/commands/pre-pr.md +57 -19
- package/templates/claude-code/commands/product-strategist.md +21 -0
- package/templates/claude-code/commands/resume-session.md +10 -10
- package/templates/claude-code/commands/run-uat.md +59 -2
- package/templates/claude-code/commands/save-session.md +10 -10
- package/templates/claude-code/commands/simplify.md +36 -0
- package/templates/claude-code/commands/tdd.md +17 -18
- package/templates/claude-code/commands/verify-all.md +24 -0
- package/templates/claude-code/commands/verify-intent.md +55 -0
- package/templates/claude-code/commands/workflows.md +52 -40
- package/templates/claude-code/hooks/polyglot.json +10 -1
- package/templates/claude-code/hooks/python.json +10 -1
- package/templates/claude-code/hooks/scripts/autofix-polyglot.mjs +2 -2
- package/templates/claude-code/hooks/scripts/autofix-python.mjs +1 -1
- package/templates/claude-code/hooks/scripts/autofix-typescript.mjs +1 -1
- package/templates/claude-code/hooks/scripts/code-hygiene.mjs +293 -0
- package/templates/claude-code/hooks/scripts/pre-commit-gate.mjs +207 -0
- package/templates/claude-code/hooks/typescript.json +10 -1
- package/templates/claude-code/skills/ai-prompts/SKILL.md +119 -41
- package/templates/claude-code/skills/git-workflow/SKILL.md +5 -5
- package/templates/claude-code/skills/nextjs/SKILL.md +1 -1
- package/templates/claude-code/skills/playwright/SKILL.md +5 -5
- package/templates/claude-code/skills/security-api/SKILL.md +1 -1
- package/templates/claude-code/skills/security-web/SKILL.md +1 -1
- package/templates/claude-code/skills/testing-patterns/SKILL.md +9 -9
- package/templates/database/prisma-postgres/{.env.example → .env.example.template} +1 -0
- package/templates/database/sqlalchemy-postgres/{.env.example → .env.example.template} +1 -0
- package/templates/docs-portal/fastapi/backend/app/portal/__pycache__/docs_reader.cpython-314.pyc +0 -0
- package/templates/docs-portal/fastapi/backend/app/portal/docs_reader.py +201 -0
- package/templates/docs-portal/fastapi/backend/app/portal/html_renderer.py +229 -0
- package/templates/docs-portal/fastapi/backend/app/portal/router.py.template +35 -0
- package/templates/docs-portal/nextjs/src/app/portal/[category]/[slug]/page.tsx +81 -0
- package/templates/docs-portal/nextjs/src/app/portal/[category]/page.tsx +65 -0
- package/templates/docs-portal/nextjs/src/app/portal/layout.tsx.template +54 -0
- package/templates/docs-portal/nextjs/src/app/portal/page.tsx +85 -0
- package/templates/docs-portal/nextjs/src/components/portal/markdown-renderer.tsx +101 -0
- package/templates/docs-portal/nextjs/src/components/portal/mobile-portal-nav.tsx +81 -0
- package/templates/docs-portal/nextjs/src/components/portal/portal-nav.tsx +86 -0
- package/templates/docs-portal/nextjs/src/lib/docs.ts +139 -0
- package/templates/frontend/nextjs/package.json.template +3 -1
- package/templates/frontend/react/index.html.template +12 -0
- package/templates/frontend/react/package.json.template +34 -0
- package/templates/frontend/react/src/App.tsx.template +10 -0
- package/templates/frontend/react/src/index.css +1 -0
- package/templates/frontend/react/src/main.tsx +10 -0
- package/templates/frontend/react/tsconfig.json +17 -0
- package/templates/frontend/react/vite.config.ts.template +15 -0
- package/templates/frontend/react/vitest.config.ts +9 -0
- package/templates/frontend/remix/app/root.tsx.template +31 -0
- package/templates/frontend/remix/app/routes/_index.tsx.template +19 -0
- package/templates/frontend/remix/app/routes/api.health.ts.template +10 -0
- package/templates/frontend/remix/app/tailwind.css +1 -0
- package/templates/frontend/remix/package.json.template +39 -0
- package/templates/frontend/remix/tsconfig.json +18 -0
- package/templates/frontend/remix/vite.config.ts.template +7 -0
- package/templates/infra/github-actions/.github/workflows/ci.yml.template +3 -0
- package/docs/00-README.md +0 -310
- package/docs/01-universal-prompt-library.md +0 -1049
- package/docs/02-claude-code-mastery-playbook.md +0 -283
- package/docs/03-multi-agent-verification.md +0 -565
- package/docs/04-errata-and-verification-checklist.md +0 -284
- package/docs/05-universal-scaffolder-vision.md +0 -452
- package/docs/06-confidence-assessment-and-repo-prompt.md +0 -407
- package/docs/errata.md +0 -58
- package/docs/multi-agent-verification.md +0 -66
- package/docs/playbook.md +0 -95
- package/docs/prompt-library.md +0 -160
- package/docs/uat/UAT_CHECKLIST.csv +0 -9
- package/docs/uat/UAT_TEMPLATE.md +0 -163
- package/templates/claude-code/commands/done.md +0 -19
- /package/{docs/plans/.gitkeep → templates/docs-portal/fastapi/backend/app/portal/__init__.py} +0 -0
package/docs/prompt-library.md
DELETED
|
@@ -1,160 +0,0 @@
|
|
|
1
|
-
# DevForge Prompt Library
|
|
2
|
-
|
|
3
|
-
8 workflow guides for developing DevForge. Each workflow includes the exact prompts to use.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Flow 1: Add a New Stack
|
|
8
|
-
|
|
9
|
-
When you want to add support for a new tech stack (e.g., Hono, React+Vite, Express).
|
|
10
|
-
|
|
11
|
-
**Step 1: Plan**
|
|
12
|
-
```
|
|
13
|
-
I want to add [stack] support to DevForge. Enter plan mode. Research:
|
|
14
|
-
1. What files/directories are needed for a typical [stack] project
|
|
15
|
-
2. What dependencies go in package.json / requirements.txt
|
|
16
|
-
3. What the recommender decision tree should look like
|
|
17
|
-
Write a plan to docs/plans/add-[stack].md
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
**Step 2: Templates**
|
|
21
|
-
```
|
|
22
|
-
Following the plan in docs/plans/add-[stack].md, create template files in
|
|
23
|
-
templates/[category]/[stack]/. Use {{VARIABLE_NAME}} for substitution.
|
|
24
|
-
Follow the patterns in existing templates like templates/frontend/nextjs/.
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
**Step 3: Recommender**
|
|
28
|
-
```
|
|
29
|
-
Update src/recommender.js to route to the new [stack] templates.
|
|
30
|
-
Add the new templateModules paths. Update formatStackSummary.
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
**Step 4: Test**
|
|
34
|
-
```
|
|
35
|
-
Add tests in tests/recommender.test.js for the new stack routing.
|
|
36
|
-
Run npx vitest run to verify all tests pass.
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
---
|
|
40
|
-
|
|
41
|
-
## Flow 2: Create a New Template
|
|
42
|
-
|
|
43
|
-
When adding individual template files to an existing stack.
|
|
44
|
-
|
|
45
|
-
```
|
|
46
|
-
I want to add a [template] to the [stack] stack. Create the template file at
|
|
47
|
-
templates/[category]/[stack]/[path]. Use {{VARIABLE_NAME}} placeholders where
|
|
48
|
-
the project name, description, or config values should go. Check
|
|
49
|
-
src/composer.js buildVariables() for available variables.
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
---
|
|
53
|
-
|
|
54
|
-
## Flow 3: Fix a Bug
|
|
55
|
-
|
|
56
|
-
**Step 1: Reproduce**
|
|
57
|
-
```
|
|
58
|
-
There's a bug: [describe]. Write a failing test in tests/ that reproduces it.
|
|
59
|
-
Run npx vitest run to confirm the test fails.
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
**Step 2: Fix**
|
|
63
|
-
```
|
|
64
|
-
Fix the bug that causes [test name] to fail. Run npx vitest run to confirm
|
|
65
|
-
the fix and that no other tests break.
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
---
|
|
69
|
-
|
|
70
|
-
## Flow 4: Refactor
|
|
71
|
-
|
|
72
|
-
```
|
|
73
|
-
I want to refactor [module/function]. Enter plan mode. First:
|
|
74
|
-
1. Check test coverage for the code being refactored
|
|
75
|
-
2. Add tests for any uncovered behavior
|
|
76
|
-
3. Plan the refactoring steps (each should keep tests green)
|
|
77
|
-
Write a plan to docs/plans/refactor-[module].md
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
---
|
|
81
|
-
|
|
82
|
-
## Flow 5: Add a Feature
|
|
83
|
-
|
|
84
|
-
For features that touch multiple modules (prompts, recommender, composer, configurator).
|
|
85
|
-
|
|
86
|
-
**Step 1: Plan**
|
|
87
|
-
```
|
|
88
|
-
I want to add [feature] to DevForge. Enter plan mode. Trace through:
|
|
89
|
-
- src/prompts.js — does the user need to be asked anything new?
|
|
90
|
-
- src/recommender.js — does the decision tree change?
|
|
91
|
-
- src/composer.js — are new template variables needed?
|
|
92
|
-
- src/claude-configurator.js — does the generated infrastructure change?
|
|
93
|
-
- src/uat-generator.js — do UAT scenarios need updating?
|
|
94
|
-
Write a plan to docs/plans/[feature].md
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
**Step 2: Implement**
|
|
98
|
-
```
|
|
99
|
-
Following docs/plans/[feature].md, implement the feature. Work module by module.
|
|
100
|
-
Run npx vitest run after each module change.
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
---
|
|
104
|
-
|
|
105
|
-
## Flow 6: Verification
|
|
106
|
-
|
|
107
|
-
```
|
|
108
|
-
Run /project:verify-all
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
This launches all 5 agents (code-quality, security, spec-validator, production-readiness, uat-validator) and runs tests.
|
|
112
|
-
|
|
113
|
-
---
|
|
114
|
-
|
|
115
|
-
## Flow 7: Pre-PR
|
|
116
|
-
|
|
117
|
-
```
|
|
118
|
-
Run /project:pre-pr
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
This runs tests, smoke test, code quality review, security review, and checks for staged secrets.
|
|
122
|
-
|
|
123
|
-
---
|
|
124
|
-
|
|
125
|
-
## Flow 8: UAT
|
|
126
|
-
|
|
127
|
-
```
|
|
128
|
-
Run /project:run-uat
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
This reads docs/uat/UAT_TEMPLATE.md, maps scenarios to tests, runs them, and updates UAT_CHECKLIST.csv.
|
|
132
|
-
|
|
133
|
-
---
|
|
134
|
-
|
|
135
|
-
## Utility Prompts
|
|
136
|
-
|
|
137
|
-
### "I'm lost"
|
|
138
|
-
```
|
|
139
|
-
Read CLAUDE.md, git log --oneline -10, and git status. Tell me where I am,
|
|
140
|
-
what I was working on, and what I should do next.
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
### "Is this right?"
|
|
144
|
-
```
|
|
145
|
-
Review my changes (git diff). Check if they follow DevForge patterns:
|
|
146
|
-
ESM imports with .js extensions, chalk for output, path.join for paths,
|
|
147
|
-
{{VARIABLE}} for templates. Flag anything that looks wrong.
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
### "Before I PR"
|
|
151
|
-
```
|
|
152
|
-
Run /project:pre-pr
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
### "Explain this code"
|
|
156
|
-
```
|
|
157
|
-
Read [file] and explain what it does, how it fits into the DevForge pipeline
|
|
158
|
-
(prompts → recommender → composer → configurator → uat-generator), and what
|
|
159
|
-
calls it.
|
|
160
|
-
```
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
UAT_ID,Scenario,Priority,Automated,Test_File,Status,Last_Run,Notes
|
|
2
|
-
UAT-001,Scaffold Next.js Full-Stack,P0,PARTIAL,tests/composer.test.js,NOT RUN,,Manual smoke test required
|
|
3
|
-
UAT-002,Scaffold FastAPI Backend,P0,PARTIAL,tests/composer.test.js,NOT RUN,,Manual smoke test required
|
|
4
|
-
UAT-003,Scaffold Polyglot Full-Stack,P0,PARTIAL,tests/composer.test.js,NOT RUN,,Manual smoke test required
|
|
5
|
-
UAT-004,Recommender Selects Correct Stack,P0,YES,tests/recommender.test.js,NOT RUN,,
|
|
6
|
-
UAT-005,Template Variable Substitution,P0,YES,tests/composer.test.js,NOT RUN,,
|
|
7
|
-
UAT-006,Claude Code Infrastructure Generated,P1,YES,tests/claude-configurator.test.js,NOT RUN,,
|
|
8
|
-
UAT-007,Invalid Input Handling,P1,NO,,NOT RUN,,Manual test required
|
|
9
|
-
UAT-008,Unsupported Stack Selection,P1,PARTIAL,tests/recommender.test.js,NOT RUN,,
|
package/docs/uat/UAT_TEMPLATE.md
DELETED
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
# UAT Scenario Pack: DevForge
|
|
2
|
-
|
|
3
|
-
## Pre-Conditions
|
|
4
|
-
- [ ] Node.js >= 18 installed
|
|
5
|
-
- [ ] npm available
|
|
6
|
-
- [ ] DevForge dependencies installed (`npm install`)
|
|
7
|
-
- [ ] No existing `test-output/` directory
|
|
8
|
-
|
|
9
|
-
## Scenarios
|
|
10
|
-
|
|
11
|
-
### UAT-001: Scaffold Next.js Full-Stack Project — Happy Path
|
|
12
|
-
**Priority:** P0
|
|
13
|
-
**Preconditions:** Clean environment, no test-output/ directory
|
|
14
|
-
**Steps:**
|
|
15
|
-
1. Run `node bin/devforge.js test-output`
|
|
16
|
-
2. Select "Full-stack app"
|
|
17
|
-
3. Select "TypeScript" for language
|
|
18
|
-
4. Select "Yes" for authentication
|
|
19
|
-
5. Select "No" for AI integration
|
|
20
|
-
6. Select "Docker" for deployment
|
|
21
|
-
7. Confirm the recommended stack
|
|
22
|
-
**Expected Result:**
|
|
23
|
-
- `test-output/` directory created
|
|
24
|
-
- Contains `package.json` with Next.js, React, TypeScript, Tailwind, Prisma, NextAuth dependencies
|
|
25
|
-
- Contains `src/app/layout.tsx`, `src/app/page.tsx`
|
|
26
|
-
- Contains `src/app/api/health/route.ts` (health check endpoint)
|
|
27
|
-
- Contains `prisma/schema.prisma`
|
|
28
|
-
- Contains `.claude/` directory with hooks, agents, commands
|
|
29
|
-
- Contains `CLAUDE.md` with Next.js-specific rules
|
|
30
|
-
- Contains `docs/uat/UAT_TEMPLATE.md`
|
|
31
|
-
**Actual Result:** ___
|
|
32
|
-
**Status:** NOT RUN
|
|
33
|
-
**Tester:** ___
|
|
34
|
-
**Date:** ___
|
|
35
|
-
**Notes:** ___
|
|
36
|
-
|
|
37
|
-
### UAT-002: Scaffold FastAPI Backend Project — Happy Path
|
|
38
|
-
**Priority:** P0
|
|
39
|
-
**Preconditions:** Clean environment, no test-output/ directory
|
|
40
|
-
**Steps:**
|
|
41
|
-
1. Run `node bin/devforge.js test-output`
|
|
42
|
-
2. Select "API / backend service"
|
|
43
|
-
3. Select "Python" for language
|
|
44
|
-
4. Select "Yes" for authentication
|
|
45
|
-
5. Select "No" for AI integration
|
|
46
|
-
6. Select "Docker" for deployment
|
|
47
|
-
7. Confirm the recommended stack
|
|
48
|
-
**Expected Result:**
|
|
49
|
-
- `test-output/` directory created
|
|
50
|
-
- Contains `backend/requirements.txt` with FastAPI, SQLAlchemy, Pydantic
|
|
51
|
-
- Contains `backend/app/main.py` with health endpoint and graceful shutdown
|
|
52
|
-
- Contains `backend/app/api/health.py`
|
|
53
|
-
- Contains `backend/app/core/config.py`, `errors.py`, `retry.py`
|
|
54
|
-
- Contains `backend/tests/` with pytest fixtures
|
|
55
|
-
- Contains `.claude/` directory with Python-specific hooks
|
|
56
|
-
- Contains `CLAUDE.md` with FastAPI-specific rules
|
|
57
|
-
**Actual Result:** ___
|
|
58
|
-
**Status:** NOT RUN
|
|
59
|
-
**Tester:** ___
|
|
60
|
-
**Date:** ___
|
|
61
|
-
**Notes:** ___
|
|
62
|
-
|
|
63
|
-
### UAT-003: Scaffold Polyglot Full-Stack Project — Happy Path
|
|
64
|
-
**Priority:** P0
|
|
65
|
-
**Preconditions:** Clean environment, no test-output/ directory
|
|
66
|
-
**Steps:**
|
|
67
|
-
1. Run `node bin/devforge.js test-output`
|
|
68
|
-
2. Select "Full-stack app"
|
|
69
|
-
3. Select "TypeScript" and "Python" for language
|
|
70
|
-
4. Select "Yes" for authentication
|
|
71
|
-
5. Select "Yes" for AI integration
|
|
72
|
-
6. Select "Docker" for deployment
|
|
73
|
-
7. Confirm the recommended stack
|
|
74
|
-
**Expected Result:**
|
|
75
|
-
- `test-output/` directory created
|
|
76
|
-
- Contains both `frontend/` and `backend/` directories
|
|
77
|
-
- Contains `docker-compose.yml` at root
|
|
78
|
-
- Contains Next.js frontend and FastAPI backend
|
|
79
|
-
- Contains both Prisma and SQLAlchemy database configs
|
|
80
|
-
- Contains polyglot Claude Code hooks (TypeScript + Python)
|
|
81
|
-
**Actual Result:** ___
|
|
82
|
-
**Status:** NOT RUN
|
|
83
|
-
**Tester:** ___
|
|
84
|
-
**Date:** ___
|
|
85
|
-
**Notes:** ___
|
|
86
|
-
|
|
87
|
-
### UAT-004: Recommender Selects Correct Stack
|
|
88
|
-
**Priority:** P0
|
|
89
|
-
**Preconditions:** None
|
|
90
|
-
**Steps:**
|
|
91
|
-
1. Run `npx vitest run tests/recommender.test.js`
|
|
92
|
-
2. Verify all test cases pass
|
|
93
|
-
3. Verify: web_app + TypeScript → Next.js full-stack
|
|
94
|
-
4. Verify: api_service + Python → FastAPI backend
|
|
95
|
-
5. Verify: full_stack + TS + Python → polyglot
|
|
96
|
-
6. Verify: unsupported combos return helpful error
|
|
97
|
-
**Expected Result:** All recommender tests pass, all 3 stacks correctly selected
|
|
98
|
-
**Actual Result:** ___
|
|
99
|
-
**Status:** NOT RUN
|
|
100
|
-
**Tester:** ___
|
|
101
|
-
**Date:** ___
|
|
102
|
-
**Notes:** ___
|
|
103
|
-
|
|
104
|
-
### UAT-005: Template Variable Substitution
|
|
105
|
-
**Priority:** P0
|
|
106
|
-
**Preconditions:** None
|
|
107
|
-
**Steps:**
|
|
108
|
-
1. Run `npx vitest run tests/composer.test.js`
|
|
109
|
-
2. Verify `{{PROJECT_NAME}}` replaced in all .template files
|
|
110
|
-
3. Verify non-.template files copied without modification
|
|
111
|
-
4. Verify .gitkeep files preserved
|
|
112
|
-
5. Verify no `{{` patterns remain in output
|
|
113
|
-
**Expected Result:** All composer tests pass, variables correctly substituted
|
|
114
|
-
**Actual Result:** ___
|
|
115
|
-
**Status:** NOT RUN
|
|
116
|
-
**Tester:** ___
|
|
117
|
-
**Date:** ___
|
|
118
|
-
**Notes:** ___
|
|
119
|
-
|
|
120
|
-
### UAT-006: Claude Code Infrastructure Generated
|
|
121
|
-
**Priority:** P1
|
|
122
|
-
**Preconditions:** Scaffold a project first
|
|
123
|
-
**Steps:**
|
|
124
|
-
1. Run `npx vitest run tests/claude-configurator.test.js`
|
|
125
|
-
2. Verify `.claude/settings.json` created with correct hooks
|
|
126
|
-
3. Verify CLAUDE.md generated with stack-specific content
|
|
127
|
-
4. Verify agents copied (5 agents)
|
|
128
|
-
5. Verify skills copied (filtered by stack)
|
|
129
|
-
6. Verify commands copied (6 commands)
|
|
130
|
-
**Expected Result:** All claude-configurator tests pass, infrastructure complete
|
|
131
|
-
**Actual Result:** ___
|
|
132
|
-
**Status:** NOT RUN
|
|
133
|
-
**Tester:** ___
|
|
134
|
-
**Date:** ___
|
|
135
|
-
**Notes:** ___
|
|
136
|
-
|
|
137
|
-
### UAT-007: Invalid Input Handling
|
|
138
|
-
**Priority:** P1
|
|
139
|
-
**Preconditions:** None
|
|
140
|
-
**Steps:**
|
|
141
|
-
1. Run `node bin/devforge.js` (no project name) — should show error
|
|
142
|
-
2. Run `node bin/devforge.js .` (invalid name) — should show error
|
|
143
|
-
3. Create `test-output/` dir, then run `node bin/devforge.js test-output` — should warn about existing dir
|
|
144
|
-
**Expected Result:** Clear error messages, no crashes, exit code 1
|
|
145
|
-
**Actual Result:** ___
|
|
146
|
-
**Status:** NOT RUN
|
|
147
|
-
**Tester:** ___
|
|
148
|
-
**Date:** ___
|
|
149
|
-
**Notes:** ___
|
|
150
|
-
|
|
151
|
-
### UAT-008: Unsupported Stack Selection
|
|
152
|
-
**Priority:** P1
|
|
153
|
-
**Preconditions:** None
|
|
154
|
-
**Steps:**
|
|
155
|
-
1. Run `node bin/devforge.js test-output`
|
|
156
|
-
2. Select "Mobile app" or "Desktop app"
|
|
157
|
-
3. Observe the recommendation
|
|
158
|
-
**Expected Result:** Displays message that the stack is not yet supported in V1, suggests closest supported option
|
|
159
|
-
**Actual Result:** ___
|
|
160
|
-
**Status:** NOT RUN
|
|
161
|
-
**Tester:** ___
|
|
162
|
-
**Date:** ___
|
|
163
|
-
**Notes:** ___
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
Verify that the current task is actually complete before moving on.
|
|
2
|
-
|
|
3
|
-
## Checklist
|
|
4
|
-
|
|
5
|
-
1. Run lint and confirm it passes: `{{LINT_COMMAND}}`
|
|
6
|
-
2. Run type check and confirm it passes: `{{TYPE_CHECK_COMMAND}}`
|
|
7
|
-
3. Run tests and confirm they pass: `{{TEST_COMMAND}}`
|
|
8
|
-
4. Check that no `.env` files or secrets are in the changes
|
|
9
|
-
5. Review the git diff to make sure only intended files changed
|
|
10
|
-
6. Verify the feature works as described (manual check or UAT scenario)
|
|
11
|
-
|
|
12
|
-
## Output
|
|
13
|
-
|
|
14
|
-
If everything passes:
|
|
15
|
-
```
|
|
16
|
-
Task complete. Ready to commit or move on.
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
If something fails, explain what needs to be fixed before the task can be considered done.
|
/package/{docs/plans/.gitkeep → templates/docs-portal/fastapi/backend/app/portal/__init__.py}
RENAMED
|
File without changes
|