wize-dev-kit 0.16.0 → 0.17.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/AGENTS.md +37 -0
- package/ARCH.md +77 -24
- package/CHANGELOG.md +14 -0
- package/DECISIONS.md +27 -1
- package/README.es.md +296 -0
- package/README.md +3 -2
- package/README.pt-BR.md +294 -0
- package/ROSTER.md +11 -3
- package/adapters/README.md +9 -7
- package/adapters/antigravity/README.md +5 -5
- package/adapters/claude-code/README.md +1 -1
- package/adapters/codex/README.md +5 -5
- package/adapters/codex/adapter.yaml +1 -1
- package/adapters/codex/render.js +1 -1
- package/adapters/continue/README.md +5 -5
- package/adapters/cursor/README.md +2 -2
- package/adapters/generic/README.md +1 -1
- package/adapters/hermes/README.md +23 -0
- package/adapters/hermes/adapter.yaml +8 -0
- package/adapters/hermes/render.js +17 -0
- package/adapters/kimi-code/README.md +5 -5
- package/adapters/kimi-code/render.js +2 -2
- package/adapters/kiro/README.md +30 -0
- package/adapters/kiro/adapter.yaml +8 -0
- package/adapters/kiro/render.js +21 -0
- package/adapters/opencode/README.md +3 -3
- package/adapters/opencode/render.js +27 -1
- package/adapters/windsurf/README.md +3 -3
- package/docs/harnesses/antigravity.md +20 -0
- package/docs/harnesses/antigravity.pt-BR.md +20 -0
- package/docs/harnesses/claude-code.md +23 -0
- package/docs/harnesses/claude-code.pt-BR.md +23 -0
- package/docs/harnesses/codex.md +21 -0
- package/docs/harnesses/codex.pt-BR.md +21 -0
- package/docs/harnesses/continue.md +21 -0
- package/docs/harnesses/continue.pt-BR.md +21 -0
- package/docs/harnesses/cursor.md +22 -0
- package/docs/harnesses/cursor.pt-BR.md +22 -0
- package/docs/harnesses/generic.md +20 -0
- package/docs/harnesses/generic.pt-BR.md +20 -0
- package/docs/harnesses/hermes.md +26 -0
- package/docs/harnesses/hermes.pt-BR.md +26 -0
- package/docs/harnesses/kimi-code.md +19 -0
- package/docs/harnesses/kimi-code.pt-BR.md +19 -0
- package/docs/harnesses/kiro.md +26 -0
- package/docs/harnesses/kiro.pt-BR.md +26 -0
- package/docs/harnesses/opencode.md +31 -0
- package/docs/harnesses/opencode.pt-BR.md +31 -0
- package/docs/harnesses/windsurf.md +22 -0
- package/docs/harnesses/windsurf.pt-BR.md +22 -0
- package/package.json +1 -1
- package/schemas/agent.schema.json +2 -2
- package/schemas/workflow.schema.json +1 -1
- package/src/app-overlay/wize-app-release-channels/workflow.md +2 -0
- package/src/app-overlay/wize-app-scaffold/workflow.md +2 -0
- package/src/app-overlay/wize-app-store-listing/workflow.md +2 -0
- package/src/builder-skills/wize-create-agent/workflow.md +2 -0
- package/src/builder-skills/wize-create-skill/workflow.md +2 -0
- package/src/builder-skills/wize-create-workflow/workflow.md +2 -0
- package/src/core-skills/wize-advanced-elicitation/skill.md +2 -0
- package/src/core-skills/wize-brainstorming/skill.md +2 -0
- package/src/core-skills/wize-customize/skill.md +116 -0
- package/src/core-skills/wize-editorial-review-prose/skill.md +94 -0
- package/src/core-skills/wize-editorial-review-structure/skill.md +99 -0
- package/src/core-skills/wize-grill/skill.md +77 -0
- package/src/core-skills/wize-index-docs/skill.md +119 -0
- package/src/core-skills/wize-pre-pr-check/skill.md +134 -0
- package/src/core-skills/wize-review-adversarial/skill.md +3 -0
- package/src/core-skills/wize-review-edge-case-hunter/skill.md +115 -0
- package/src/core-skills/wize-shard-doc/skill.md +2 -0
- package/src/core-skills/wize-spec/assets/headless-schemas.md +39 -0
- package/src/core-skills/wize-spec/assets/spec-template.md +40 -0
- package/src/core-skills/wize-spec/customize.toml +20 -0
- package/src/core-skills/wize-spec/skill.md +112 -0
- package/src/method-skills/1-analysis/wize-agent-analyst/agent.yaml +3 -0
- package/src/method-skills/1-analysis/wize-document-project/documentation-requirements.csv +12 -0
- package/src/method-skills/1-analysis/wize-document-project/templates/api-contracts-template.md +38 -0
- package/src/method-skills/1-analysis/wize-document-project/templates/architecture-template.md +54 -0
- package/src/method-skills/1-analysis/wize-document-project/templates/component-inventory-template.md +40 -0
- package/src/method-skills/1-analysis/wize-document-project/templates/contribution-guide-template.md +34 -0
- package/src/method-skills/1-analysis/wize-document-project/templates/data-models-template.md +36 -0
- package/src/method-skills/1-analysis/wize-document-project/templates/deep-dive-template.md +312 -0
- package/src/method-skills/1-analysis/wize-document-project/templates/deployment-guide-template.md +42 -0
- package/src/method-skills/1-analysis/wize-document-project/templates/development-guide-template.md +61 -0
- package/src/method-skills/1-analysis/wize-document-project/templates/index-template.md +185 -0
- package/src/method-skills/1-analysis/wize-document-project/templates/project-overview-template.md +110 -0
- package/src/method-skills/1-analysis/wize-document-project/templates/project-scan-report-schema.json +159 -0
- package/src/method-skills/1-analysis/wize-document-project/templates/source-tree-template.md +142 -0
- package/src/method-skills/1-analysis/wize-document-project/workflow.md +213 -20
- package/src/method-skills/1-analysis/wize-domain-research/customize.toml +14 -0
- package/src/method-skills/1-analysis/wize-domain-research/domain-steps/step-01-init.md +49 -0
- package/src/method-skills/1-analysis/wize-domain-research/domain-steps/step-02-domain-analysis.md +39 -0
- package/src/method-skills/1-analysis/wize-domain-research/domain-steps/step-03-competitive-landscape.md +39 -0
- package/src/method-skills/1-analysis/wize-domain-research/domain-steps/step-04-regulatory-focus.md +39 -0
- package/src/method-skills/1-analysis/wize-domain-research/domain-steps/step-05-technical-trends.md +39 -0
- package/src/method-skills/1-analysis/wize-domain-research/domain-steps/step-06-research-synthesis.md +43 -0
- package/src/method-skills/1-analysis/wize-domain-research/research.template.md +31 -0
- package/src/method-skills/1-analysis/wize-domain-research/workflow.md +58 -0
- package/src/method-skills/1-analysis/wize-market-research/customize.toml +14 -0
- package/src/method-skills/1-analysis/wize-market-research/research.template.md +31 -0
- package/src/method-skills/1-analysis/wize-market-research/steps/step-01-init.md +57 -0
- package/src/method-skills/1-analysis/wize-market-research/steps/step-02-customer-behavior.md +39 -0
- package/src/method-skills/1-analysis/wize-market-research/steps/step-03-customer-pain-points.md +37 -0
- package/src/method-skills/1-analysis/wize-market-research/steps/step-04-customer-decisions.md +39 -0
- package/src/method-skills/1-analysis/wize-market-research/steps/step-05-competitive-analysis.md +37 -0
- package/src/method-skills/1-analysis/wize-market-research/steps/step-06-research-completion.md +47 -0
- package/src/method-skills/1-analysis/wize-market-research/workflow.md +66 -0
- package/src/method-skills/1-analysis/wize-prfaq/workflow.md +152 -11
- package/src/method-skills/1-analysis/wize-product-brief/workflow.md +92 -19
- package/src/method-skills/1-analysis/wize-refresh-knowledge/workflow.md +129 -0
- package/src/method-skills/1-analysis/wize-research/workflow.md +39 -12
- package/src/method-skills/1-analysis/wize-technical-research/customize.toml +14 -0
- package/src/method-skills/1-analysis/wize-technical-research/research.template.md +31 -0
- package/src/method-skills/1-analysis/wize-technical-research/technical-steps/step-01-init.md +49 -0
- package/src/method-skills/1-analysis/wize-technical-research/technical-steps/step-02-technical-overview.md +45 -0
- package/src/method-skills/1-analysis/wize-technical-research/technical-steps/step-03-integration-patterns.md +39 -0
- package/src/method-skills/1-analysis/wize-technical-research/technical-steps/step-04-architectural-patterns.md +39 -0
- package/src/method-skills/1-analysis/wize-technical-research/technical-steps/step-05-implementation-research.md +42 -0
- package/src/method-skills/1-analysis/wize-technical-research/technical-steps/step-06-research-synthesis.md +46 -0
- package/src/method-skills/1-analysis/wize-technical-research/workflow.md +60 -0
- package/src/method-skills/1-analysis/wize-trigger-map/workflow.md +82 -16
- package/src/method-skills/2-plan-workflows/wize-create-prd/workflow.md +135 -23
- package/src/method-skills/2-plan-workflows/wize-edit-prd/workflow.md +110 -0
- package/src/method-skills/2-plan-workflows/wize-ux-design/workflow.md +134 -28
- package/src/method-skills/2-plan-workflows/wize-ux-scenarios/workflow.md +93 -15
- package/src/method-skills/2-plan-workflows/wize-validate-prd/workflow.md +108 -12
- package/src/method-skills/3-solutioning/wize-check-implementation-readiness/workflow.md +103 -11
- package/src/method-skills/3-solutioning/wize-create-architecture/architecture-decision-template.md +41 -0
- package/src/method-skills/3-solutioning/wize-create-architecture/customize.toml +20 -0
- package/src/method-skills/3-solutioning/wize-create-architecture/steps/step-01-init.md +95 -0
- package/src/method-skills/3-solutioning/wize-create-architecture/steps/step-01b-continue.md +32 -0
- package/src/method-skills/3-solutioning/wize-create-architecture/steps/step-02-context.md +126 -0
- package/src/method-skills/3-solutioning/wize-create-architecture/steps/step-03-starter.md +110 -0
- package/src/method-skills/3-solutioning/wize-create-architecture/steps/step-04-decisions.md +129 -0
- package/src/method-skills/3-solutioning/wize-create-architecture/steps/step-05-patterns.md +109 -0
- package/src/method-skills/3-solutioning/wize-create-architecture/steps/step-06-structure.md +97 -0
- package/src/method-skills/3-solutioning/wize-create-architecture/steps/step-07-validation.md +124 -0
- package/src/method-skills/3-solutioning/wize-create-architecture/steps/step-08-complete.md +59 -0
- package/src/method-skills/3-solutioning/wize-create-architecture/workflow.md +55 -48
- package/src/method-skills/3-solutioning/wize-create-epics-and-stories/workflow.md +154 -15
- package/src/method-skills/3-solutioning/wize-design-system/workflow.md +184 -22
- package/src/method-skills/3-solutioning/wize-nfr-principles/workflow.md +145 -17
- package/src/method-skills/3-solutioning/wize-project-context/workflow.md +120 -0
- package/src/method-skills/3-solutioning/wize-tech-vision/workflow.md +130 -22
- package/src/method-skills/4-implementation/wize-agent-dev/persona.md +12 -0
- package/src/method-skills/4-implementation/wize-changelog/workflow.md +184 -0
- package/src/method-skills/4-implementation/wize-checkpoint-preview/workflow.md +117 -0
- package/src/method-skills/4-implementation/wize-code-review/customize.toml +21 -0
- package/src/method-skills/4-implementation/wize-code-review/steps/step-01-gather-context.md +64 -0
- package/src/method-skills/4-implementation/wize-code-review/steps/step-02-review.md +40 -0
- package/src/method-skills/4-implementation/wize-code-review/steps/step-03-triage.md +43 -0
- package/src/method-skills/4-implementation/wize-code-review/steps/step-04-present.md +100 -0
- package/src/method-skills/4-implementation/wize-code-review/workflow.md +54 -12
- package/src/method-skills/4-implementation/wize-correct-course/workflow.md +93 -0
- package/src/method-skills/4-implementation/wize-create-story/workflow.md +154 -10
- package/src/method-skills/4-implementation/wize-dev-story/workflow.md +185 -17
- package/src/method-skills/4-implementation/wize-investigate/workflow.md +123 -0
- package/src/method-skills/4-implementation/wize-quick-dev/workflow.md +136 -18
- package/src/method-skills/4-implementation/wize-release/workflow.md +162 -0
- package/src/method-skills/4-implementation/wize-retrospective/workflow.md +114 -10
- package/src/method-skills/4-implementation/wize-sprint-planning/workflow.md +78 -11
- package/src/method-skills/4-implementation/wize-sprint-status/workflow.md +45 -11
- package/src/method-skills/module.yaml +28 -0
- package/src/orchestrator-skills/module.yaml +7 -1
- package/src/orchestrator-skills/wize/skill.md +164 -0
- package/src/orchestrator-skills/wize-check/skill.md +98 -0
- package/src/orchestrator-skills/wize-help/skill.md +227 -67
- package/src/orchestrator-skills/wize-onboarding/workflow.md +78 -14
- package/src/orchestrator-skills/wize-orchestrator/agent.yaml +2 -0
- package/src/orchestrator-skills/wize-orchestrator/persona.md +44 -3
- package/src/orchestrator-skills/wize-party-mode/workflow.md +2 -0
- package/src/security-overlay/_shared/allowlist.js +154 -0
- package/src/security-overlay/_shared/backlog.js +169 -0
- package/src/security-overlay/_shared/cli-runner.js +87 -0
- package/src/security-overlay/_shared/cvss.js +108 -0
- package/src/security-overlay/_shared/detect.js +125 -0
- package/src/security-overlay/_shared/install-script.js +205 -0
- package/src/security-overlay/_shared/invoke-phase.js +86 -0
- package/src/security-overlay/_shared/owasp.js +56 -0
- package/src/security-overlay/_shared/partial.js +225 -0
- package/src/security-overlay/_shared/preflight.js +175 -0
- package/src/security-overlay/_shared/scope-gate.js +172 -0
- package/src/security-overlay/_shared/scope-parser.js +147 -0
- package/src/security-overlay/agents/red-teamer/agent.yaml +54 -0
- package/src/security-overlay/agents/red-teamer/persona.md +49 -0
- package/src/security-overlay/data/common.txt +115 -0
- package/src/security-overlay/data/owasp-top10.json +15 -0
- package/src/security-overlay/data/tool-allowlist.json +31 -0
- package/src/security-overlay/skills/wize-sec-enumerate/scripts/run-enumerate.js +180 -0
- package/src/security-overlay/skills/wize-sec-enumerate/skill.md +34 -0
- package/src/security-overlay/skills/wize-sec-exploit/data/common.txt +117 -0
- package/src/security-overlay/skills/wize-sec-exploit/scripts/run-ffuf.js +147 -0
- package/src/security-overlay/skills/wize-sec-exploit/scripts/run-nikto.js +145 -0
- package/src/security-overlay/skills/wize-sec-exploit/scripts/run-nuclei.js +176 -0
- package/src/security-overlay/skills/wize-sec-exploit/scripts/run-sqlmap.js +139 -0
- package/src/security-overlay/skills/wize-sec-pentest/scripts/run-pipeline.js +184 -0
- package/src/security-overlay/skills/wize-sec-pentest/skill.md +54 -0
- package/src/security-overlay/skills/wize-sec-recon/scripts/run-gitleaks.js +139 -0
- package/src/security-overlay/skills/wize-sec-recon/scripts/run-osv.js +227 -0
- package/src/security-overlay/skills/wize-sec-recon/scripts/run-recon.js +162 -0
- package/src/security-overlay/skills/wize-sec-recon/skill.md +37 -0
- package/src/security-overlay/skills/wize-sec-report/scripts/render-report.js +1033 -0
- package/src/security-overlay/skills/wize-sec-scope/scripts/generate-scope.js +106 -0
- package/src/security-overlay/skills/wize-sec-scope/skill.md +52 -0
- package/src/tea-skills/wize-qa-generate-e2e-tests/workflow.md +121 -0
- package/src/tea-skills/wize-tea-design/workflow.md +107 -13
- package/src/tea-skills/wize-tea-gate/workflow.md +118 -25
- package/src/tea-skills/wize-tea-nfr/workflow.md +107 -14
- package/src/tea-skills/wize-tea-review/workflow.md +123 -13
- package/src/tea-skills/wize-tea-risk/workflow.md +113 -10
- package/src/tea-skills/wize-tea-trace/workflow.md +86 -12
- package/src/web-overlay/wize-web-deploy/workflow.md +2 -0
- package/src/web-overlay/wize-web-scaffold/workflow.md +2 -0
- package/src/web-overlay/wize-web-seo-audit/workflow.md +2 -0
- package/tools/check-eli5-all-adapters.js +3 -2
- package/tools/installer/baseline.js +138 -0
- package/tools/installer/commands/agent.js +197 -0
- package/tools/installer/commands/doctor.js +321 -0
- package/tools/installer/commands/document-project.js +93 -0
- package/tools/installer/commands/sync.js +45 -0
- package/tools/installer/commands/update.js +172 -0
- package/tools/installer/document-project/batch-scanner.js +93 -0
- package/tools/installer/document-project/classify.js +170 -0
- package/tools/installer/document-project/modes/deep-dive.js +196 -0
- package/tools/installer/document-project/modes/full-rescan.js +15 -0
- package/tools/installer/document-project/modes/initial-scan.js +100 -0
- package/tools/installer/document-project/modes/quick.js +211 -0
- package/tools/installer/document-project/render-index.js +101 -0
- package/tools/installer/document-project/state.js +110 -0
- package/tools/installer/onboarding.js +14 -20
- package/tools/installer/render-shared.js +159 -15
- package/tools/installer/setup-helpers.js +2 -0
- package/tools/installer/validators/run-all.js +3 -2
- package/tools/installer/version-check.js +117 -0
- package/tools/installer/wize-cli.js +501 -70
|
@@ -1,33 +1,201 @@
|
|
|
1
1
|
---
|
|
2
|
+
|
|
2
3
|
code: wize-dev-story
|
|
4
|
+
description: "Use quando uma story estiver pronta para implementação e precisar ser desenvolvida com TDD e commits rastreáveis."
|
|
3
5
|
name: Dev Story
|
|
4
6
|
phase: 4-implementation
|
|
5
7
|
owner: wize-agent-dev # Shuri
|
|
6
|
-
status:
|
|
8
|
+
status: ready
|
|
7
9
|
---
|
|
8
10
|
|
|
9
11
|
# Dev Story
|
|
10
12
|
|
|
11
|
-
**Goal.** Implement one story under TDD discipline.
|
|
13
|
+
**Goal.** Implement one story under TDD discipline. Tests first; minimum code to pass; refactor with green. Each commit cites an AC ID. The PR ends in a clean gate, not a "looks good to me."
|
|
14
|
+
|
|
15
|
+
Shuri drives. Hawkeye observes (test design is binding). Tony stays available for architectural questions.
|
|
16
|
+
|
|
17
|
+
## Operating contract
|
|
18
|
+
|
|
19
|
+
I work inside a repo with WDK installed: `.wize/`, `AGENTS.md`, and the `wize-*` skills are my instructions and memory, not background reading. This section is the execution slice of the story's **mission contract** (see `/wize mission` or `/wize-help mission`).
|
|
20
|
+
|
|
21
|
+
- **Inspect before editing.** Read the story, its sources of truth, and the touched code first.
|
|
22
|
+
- **Reuse ladder before new code** (see `wize-agent-dev` persona): needs to exist → already here → stdlib → framework feature → installed dep → one-liner → only then new code.
|
|
23
|
+
- **Test-first, unconditionally.** Red before green, per the loop below — this is the strict-TDD workflow; the "when applicable" latitude lives in `wize-quick-dev`, not here. Smallest sufficient change; follow existing conventions.
|
|
24
|
+
- **Run real commands.** No success claim without evidence — a passing run, not "should pass."
|
|
25
|
+
- **Never stop at planning.** Planning is a step, not a deliverable.
|
|
12
26
|
|
|
13
27
|
## Inputs
|
|
14
|
-
|
|
28
|
+
|
|
29
|
+
- `.wize/solutioning/stories/{epic}/{story}.md`
|
|
15
30
|
- `.wize/solutioning/architecture.md`
|
|
16
|
-
- `.wize/
|
|
31
|
+
- `.wize/solutioning/design-system/` (use existing components)
|
|
32
|
+
- `.wize/implementation/tea/{epic}/{story}/design.md` (the test contract)
|
|
17
33
|
|
|
18
34
|
## Outputs
|
|
19
|
-
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
35
|
+
|
|
36
|
+
- Code + tests in the target repo.
|
|
37
|
+
- Commit messages reference AC IDs.
|
|
38
|
+
- Story file updated to `status: ready-for-review`.
|
|
39
|
+
|
|
40
|
+
## The loop (TDD, story-scoped)
|
|
41
|
+
|
|
42
|
+
### 1. Read
|
|
43
|
+
|
|
44
|
+
Story ACs, out-of-scope, notes, `tea-design.md`. Confirm the test split. If the design doesn't match the story (mismatch on test count, mock, environment), ping Hawkeye **before** writing code.
|
|
45
|
+
|
|
46
|
+
### 2. Slice the story into micro-cycles
|
|
47
|
+
|
|
48
|
+
Each cycle is one AC (or part of one) and produces a green test + small code change. Don't try to ship the whole story in one commit.
|
|
49
|
+
|
|
50
|
+
### 3. Red
|
|
51
|
+
|
|
52
|
+
Write the failing test first. Match the assertion shape in `design.md`. Don't write code yet.
|
|
53
|
+
|
|
54
|
+
```ts
|
|
55
|
+
// red — first run, fails
|
|
56
|
+
test('valid email returns ok', () => {
|
|
57
|
+
expect(validateInviteEmail('a@b.co')).toEqual({ ok: true });
|
|
58
|
+
});
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### 4. Green
|
|
62
|
+
|
|
63
|
+
Before writing anything new, run Shuri's reuse ladder (see `wize-agent-dev` persona): does this need to exist → already in the codebase → stdlib → native/framework feature → installed dependency → one-liner → only then new code. Write the **minimum** code that turns the test green. No anticipated branches; no "just-in-case" handling.
|
|
64
|
+
|
|
65
|
+
```ts
|
|
66
|
+
// green — minimum to pass
|
|
67
|
+
export const validateInviteEmail = (s: string) => ({ ok: /@/.test(s) });
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### 5. Refactor
|
|
71
|
+
|
|
72
|
+
Now harden, with the test as safety net.
|
|
73
|
+
|
|
74
|
+
```ts
|
|
75
|
+
// refactor — same green tests, real logic
|
|
76
|
+
import { z } from 'zod';
|
|
77
|
+
const schema = z.string().email();
|
|
78
|
+
export const validateInviteEmail = (s: string) =>
|
|
79
|
+
schema.safeParse(s).success ? { ok: true } : { ok: false, code: 'invalid_format', field: 'email' };
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### 6. Commit
|
|
83
|
+
|
|
84
|
+
Conventional commits, AC IDs referenced.
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
feat(invite): validate email per AC-02-1 / AC-02-2
|
|
88
|
+
- add validateInviteEmail with zod
|
|
89
|
+
- add 4 unit tests covering valid + invalid rules
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### 7. Repeat
|
|
93
|
+
|
|
94
|
+
Until every AC has at least one test + minimum code that makes it pass.
|
|
95
|
+
|
|
96
|
+
### 7.5. Loop verification (auto-check)
|
|
97
|
+
|
|
98
|
+
Before declaring the loop done, run these checks:
|
|
99
|
+
|
|
100
|
+
| Check | How | Fail → |
|
|
101
|
+
|---|---|---|
|
|
102
|
+
| **Evidence of iteration** | `git log --oneline` shows ≥2 commits with AC IDs (skip if story has only 1 AC) | Return to step 2 |
|
|
103
|
+
| **AC-to-test mapping** | Every AC in the story file has a corresponding test case name | Return to step 3 (Red) |
|
|
104
|
+
| **All AC tests green** | `npx vitest run --reporter=verbose` (or equivalent) — grep output for each AC's test name | Return to step 4 (Green) |
|
|
105
|
+
|
|
106
|
+
**Max-cycles guard.** If the same AC cycles through Red→Green→Refactor 3+ times without staying green, stop and escalate to Wizer: the test design may be wrong, the AC may be mis-sized, or the approach may need Tony.
|
|
107
|
+
|
|
108
|
+
### 8. Knowledge update (inline, ~60s)
|
|
109
|
+
|
|
110
|
+
Before opening the PR, ask: **did this story touch any of the 5 baseline axes** documented in `.wize/knowledge/document-project/`?
|
|
111
|
+
|
|
112
|
+
| Axis | Touched when… | File to update |
|
|
113
|
+
|---|---|---|
|
|
114
|
+
| **Architecture** | new component, new sequence, changed data flow | `architecture-snapshot.md` |
|
|
115
|
+
| **Conventions** | new naming/folder/test pattern published as public contract (incl. `testid`) | `conventions.md` |
|
|
116
|
+
| **Risk-spots** | introduced a complexity hot spot OR resolved one | `risk-spots.md` |
|
|
117
|
+
| **Dependencies** | added / removed / upgraded a runtime dep | `dependencies.md` |
|
|
118
|
+
| **Overview** | new user-visible feature a new dev should know about | `overview.md` |
|
|
119
|
+
|
|
120
|
+
If yes for any axis: open the file and add **1–3 lines** under a new dated bullet — in the same PR.
|
|
121
|
+
|
|
122
|
+
```markdown
|
|
123
|
+
## 2026-06-12 — E01-S03
|
|
124
|
+
- Conventions: `data-testid="invite-*"` published as public contract; Hawkeye E2E depends on these.
|
|
125
|
+
- Risk: R-1 (mailer) mitigation now confirmed (integration test covers retry policy).
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
If no axis was touched, you skip this step entirely — quick-dev-style changes don't need it. Hawkeye will check whether the call was correct in `tea-review`. A story that touched an axis but skipped the update gets a `KN-NN` finding in the gate (recommendation `CONCERNS` advisory, or `FAIL` enforcing).
|
|
129
|
+
|
|
130
|
+
This is how the brownfield baseline stays alive instead of going stale 6 months in.
|
|
131
|
+
|
|
132
|
+
### 9. Pre-PR self-check
|
|
133
|
+
|
|
134
|
+
- All Hawkeye-declared tests exist + pass — **AC → test mapping complete**, every AC traced to a named passing test.
|
|
135
|
+
- Required checks run: unit + integration + e2e (as the test contract declares), lint, format, type-check, build — and security when the story touches auth/payments/boundaries. If a command couldn't run, say **exactly which and why** — don't silently drop it.
|
|
136
|
+
- No `test.skip` / `.only` left.
|
|
137
|
+
- Authz enforced at every server boundary the story adds.
|
|
138
|
+
- Loading / empty / error states rendered and asserted.
|
|
139
|
+
- `data-testid` matches story's "notes for Hawkeye".
|
|
140
|
+
- Story file frontmatter → `status: ready-for-review`.
|
|
141
|
+
- Self-walk the screen (web) or smoke a tab on simulator (app).
|
|
142
|
+
|
|
143
|
+
### 10. Open PR
|
|
144
|
+
|
|
145
|
+
PR description includes:
|
|
146
|
+
- Story link.
|
|
147
|
+
- AC list with the test names that cover them.
|
|
148
|
+
- Screenshots / recordings of happy + failure paths.
|
|
149
|
+
- Knowledge update line (`Touched axis: <none|architecture|conventions|risk-spots|dependencies|overview>`).
|
|
150
|
+
- TEA expected next: design → trace → review → gate.
|
|
151
|
+
|
|
152
|
+
### 11. Address gate findings
|
|
153
|
+
|
|
154
|
+
If `tea-review` or `tea-gate` flags issues, fix them in the same PR or open a follow-up if the story has shipped a separate value-bearing slice.
|
|
155
|
+
|
|
156
|
+
**Loop-back protocol:**
|
|
157
|
+
1. Read each finding's `severity` and `blocking` flag.
|
|
158
|
+
2. For each `blocking: true` finding → return to step 3 (Red) for the affected AC.
|
|
159
|
+
3. For each `blocking: false` finding → log in story `notes` and fix in same PR before re-submitting to gate.
|
|
160
|
+
4. **Max-retry guard:** if the same story cycles through gate → fix → gate 3+ times, stop and escalate to Wizer. The story may be mis-sized, the test design may be wrong, or the ACs may need renegotiation with Hill.
|
|
161
|
+
|
|
162
|
+
## Security + perf during implementation
|
|
163
|
+
|
|
164
|
+
Shuri thinks both at write time, not at review time:
|
|
165
|
+
|
|
166
|
+
- Auth context on every server entry point — confirm via Tony's middleware pattern.
|
|
167
|
+
- Tokens never logged.
|
|
168
|
+
- Inputs validated at the boundary; trusted by the time they reach domain.
|
|
169
|
+
- Network calls in handlers wrapped with timeout + retry policy from architecture.
|
|
170
|
+
- Don't `await` in a loop without batching.
|
|
171
|
+
- Don't ship dead code (`isFooEnabled = true` always).
|
|
31
172
|
|
|
32
173
|
## Quick-dev exception
|
|
33
|
-
|
|
174
|
+
|
|
175
|
+
If the work is small / well-scoped and Wizer invoked `wize-quick-dev` instead of this workflow, the design step is replaced by smoke-test-only commitment and the gate is a single one-line entry in `quick-dev-log.md`.
|
|
176
|
+
|
|
177
|
+
## Anti-patterns Shuri rejects in her own work
|
|
178
|
+
|
|
179
|
+
- Writing code first and tests "after the bug fix" — that's not TDD; that's regression-tests.
|
|
180
|
+
- Commits that don't cite an AC.
|
|
181
|
+
- "Refactor while green" turning into "rewrite while green."
|
|
182
|
+
- Bundling cross-cutting refactors into the story PR. Split.
|
|
183
|
+
- Editing tests so they pass instead of editing code so tests pass.
|
|
184
|
+
|
|
185
|
+
## Final report
|
|
186
|
+
|
|
187
|
+
When the story is done, report to the thread in this shape — decisions, evidence, results, blockers only; no extended private reasoning:
|
|
188
|
+
|
|
189
|
+
1. **Route used** — full lifecycle (dev-story).
|
|
190
|
+
2. **Solution summary** — what changed and why, in a few lines.
|
|
191
|
+
3. **Files changed.**
|
|
192
|
+
4. **AC → test mapping** — each AC and the passing test that covers it.
|
|
193
|
+
5. **Commands run + results** — the real checks and their outcomes; name any that couldn't run and why.
|
|
194
|
+
6. **`.wize/` artifacts updated** — story status, TEA artifacts, knowledge axes.
|
|
195
|
+
7. **Relevant decisions** — including any ADR if architectural.
|
|
196
|
+
8. **Residual risks / limitations / skipped items** — including recommended extras logged separately (no silent scope creep).
|
|
197
|
+
9. **Single recommended next action** — usually the TEA gate.
|
|
198
|
+
|
|
199
|
+
## Hand-off
|
|
200
|
+
|
|
201
|
+
> Story E01-S03 implemented. All ACs covered by tests; CI green. PR opened (#412). Hawkeye, ready for trace + review. Notes section of the story has the testid map you'll use.
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
---
|
|
2
|
+
|
|
3
|
+
code: wize-investigate
|
|
4
|
+
description: "Use quando um bug ou comportamento inesperado surgir e precisar de investigação estruturada com root cause analysis."
|
|
5
|
+
name: Investigate
|
|
6
|
+
phase: 4-implementation
|
|
7
|
+
owner: wize-agent-dev # Shuri (+ wize-agent-test-architect Hawkeye on call)
|
|
8
|
+
status: ready
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Investigate
|
|
12
|
+
|
|
13
|
+
**Goal.** Structured root-cause analysis for a failed test, regression, or unexpected behavior. Produces a written report so the team (and future-you) can retrace the steps.
|
|
14
|
+
|
|
15
|
+
Shuri drives. Hawkeye on call for test-specific analysis. Wizer is on call for cross-cutting impact.
|
|
16
|
+
|
|
17
|
+
## When to run
|
|
18
|
+
|
|
19
|
+
- A test fails and the cause is not obvious from the diff.
|
|
20
|
+
- A regression appears in production or CI.
|
|
21
|
+
- A user reports a bug with unclear repro steps.
|
|
22
|
+
- An incident triggers post-mortem.
|
|
23
|
+
|
|
24
|
+
## When NOT to run
|
|
25
|
+
|
|
26
|
+
- The cause is obvious from the diff → use `wize-quick-dev` to fix directly.
|
|
27
|
+
- A new feature is needed (use `wize-create-story`).
|
|
28
|
+
- A security finding is suspected (escalate immediately; do not investigate solo).
|
|
29
|
+
|
|
30
|
+
## Inputs
|
|
31
|
+
|
|
32
|
+
- The failing test, error log, or user report.
|
|
33
|
+
- The commit range since the last known-good state.
|
|
34
|
+
- The relevant story file (if any).
|
|
35
|
+
- A free-form description of the symptoms.
|
|
36
|
+
|
|
37
|
+
## Output
|
|
38
|
+
|
|
39
|
+
- `.wize/implementation/investigations/{YYYY-MM-DD}-{short-slug}.md` — a written report.
|
|
40
|
+
|
|
41
|
+
## Steps
|
|
42
|
+
|
|
43
|
+
### 1. Frame
|
|
44
|
+
|
|
45
|
+
One paragraph: what broke, when it was first noticed, who reported it, and how serious. If you cannot write this in 3 sentences, the report is too broad.
|
|
46
|
+
|
|
47
|
+
### 2. Reproduce
|
|
48
|
+
|
|
49
|
+
Step-by-step: how to reproduce locally. Include environment (OS, Node version, branch), commands, expected vs. actual output. If unreproducible, mark "not reproducible after N attempts" and stop.
|
|
50
|
+
|
|
51
|
+
### 3. Hypothesize
|
|
52
|
+
|
|
53
|
+
List 3 root causes, ranked by likelihood. For each:
|
|
54
|
+
- What would explain the symptoms.
|
|
55
|
+
- A 1-line test to confirm or refute.
|
|
56
|
+
- Confidence: low / medium / high.
|
|
57
|
+
|
|
58
|
+
### 4. Verify
|
|
59
|
+
|
|
60
|
+
For each hypothesis, run the 1-line test. Record: confirmed / refuted / inconclusive. If all refuted, return to step 3 and re-rank.
|
|
61
|
+
|
|
62
|
+
### 5. Conclude
|
|
63
|
+
|
|
64
|
+
Pick the surviving root cause. State:
|
|
65
|
+
- **Root cause:** {description}.
|
|
66
|
+
- **Fix path:** {one paragraph: what to change and why}.
|
|
67
|
+
- **Effort:** S / M / L.
|
|
68
|
+
- **Risk of fix:** low / medium / high.
|
|
69
|
+
- **Recommended next step:** open a quick-dev, open a story, or escalate.
|
|
70
|
+
|
|
71
|
+
### 6. Hand off
|
|
72
|
+
|
|
73
|
+
Notify the next workflow:
|
|
74
|
+
- S / low risk → `/wize-quick-dev` (Shuri fixes directly).
|
|
75
|
+
- M+ or higher risk → `/wize-create-story` (new story for the fix).
|
|
76
|
+
- Escalation → `/wize-correct-course` (involve PM + Wizer).
|
|
77
|
+
|
|
78
|
+
## Output template
|
|
79
|
+
|
|
80
|
+
```markdown
|
|
81
|
+
---
|
|
82
|
+
date: 2026-06-16
|
|
83
|
+
author: Shuri
|
|
84
|
+
severity: high
|
|
85
|
+
related_story: E04-S02
|
|
86
|
+
related_test: test/document-project-classify.test.js
|
|
87
|
+
status: concluded
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
# Investigation — {short-slug}
|
|
91
|
+
|
|
92
|
+
## Frame
|
|
93
|
+
{one paragraph}
|
|
94
|
+
|
|
95
|
+
## Reproduce
|
|
96
|
+
1. ...
|
|
97
|
+
2. ...
|
|
98
|
+
**Expected:** {x}
|
|
99
|
+
**Actual:** {y}
|
|
100
|
+
|
|
101
|
+
## Hypotheses
|
|
102
|
+
1. **{hypothesis}** — Confidence: high. Test: {1-liner}. Result: confirmed.
|
|
103
|
+
2. ...
|
|
104
|
+
|
|
105
|
+
## Conclude
|
|
106
|
+
- **Root cause:** {description}
|
|
107
|
+
- **Fix path:** {one paragraph}
|
|
108
|
+
- **Effort:** M
|
|
109
|
+
- **Risk of fix:** low
|
|
110
|
+
- **Next:** /wize-create-story (E04-S05)
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## Anti-patterns Shuri rejects
|
|
114
|
+
|
|
115
|
+
- Skipping the hypothesis ranking. (Ranking forces you to consider alternatives.)
|
|
116
|
+
- Stopping at "I think it's X" without the verification test. (Confirmation bias.)
|
|
117
|
+
- Mixing the investigation with the fix. (Investigate, then propose; do not edit code yet.)
|
|
118
|
+
- One-paragraph reports. (If it's a real investigation, it's at least 5 sections.)
|
|
119
|
+
- Sharing the report only in chat. (Always write to disk for archival.)
|
|
120
|
+
|
|
121
|
+
## Hand-off
|
|
122
|
+
|
|
123
|
+
> "Investigation concluded. Root cause: {summary}. Next: `/wize-create-story` (M+ fix) or `/wize-quick-dev` (S fix)."
|
|
@@ -1,33 +1,151 @@
|
|
|
1
1
|
---
|
|
2
|
+
|
|
2
3
|
code: wize-quick-dev
|
|
4
|
+
description: "Use quando a demanda for pequena e bem delimitada (bug fix, copy edit, refactor) e não justificar o ciclo completo."
|
|
3
5
|
name: Quick Dev (lifecycle shortcut)
|
|
4
6
|
phase: 4-implementation
|
|
5
7
|
owner: wize-agent-dev # Shuri
|
|
6
|
-
status:
|
|
8
|
+
status: ready
|
|
7
9
|
---
|
|
8
10
|
|
|
9
11
|
# Quick Dev
|
|
10
12
|
|
|
11
|
-
**Goal.** When the task is small and well-scoped (bug fix, copy edit, small refactor), skip the full lifecycle.
|
|
13
|
+
**Goal.** When the task is small and well-scoped (bug fix, copy edit, small refactor, dep bump, brownfield maintenance), skip Phase 1–3 and execute with light TEA. Save the full lifecycle for new value.
|
|
14
|
+
|
|
15
|
+
Wizer authorizes the shortcut (via routing). Shuri runs it. Hawkeye does smoke-only.
|
|
16
|
+
|
|
17
|
+
## Operating contract (light)
|
|
18
|
+
|
|
19
|
+
Still a **mission contract**, just a small one: `.wize/` + `AGENTS.md` + skills are the instructions. Inspect before editing, reuse ladder before new code, smallest sufficient change, test-first when the change has a testable surface, run the real smoke + checks, no success claim without evidence. If it grows past ~1h or touches a new feature/architecture/UX/security surface, stop and re-route to Full Lifecycle — don't force it through here.
|
|
20
|
+
|
|
21
|
+
## When to use (yes)
|
|
22
|
+
|
|
23
|
+
- Bug fix with a clear root cause.
|
|
24
|
+
- Copy or content edit.
|
|
25
|
+
- Small refactor with no behavior change.
|
|
26
|
+
- Dependency bump (security or minor).
|
|
27
|
+
- Brownfield maintenance: rename, structural cleanup, dead-code removal.
|
|
28
|
+
- Hotfix during incident response (post-mortem after).
|
|
29
|
+
|
|
30
|
+
## When NOT to use (no)
|
|
31
|
+
|
|
32
|
+
- New feature, even small.
|
|
33
|
+
- Cross-cutting change touching architecture.
|
|
34
|
+
- Changes where ACs need to be agreed.
|
|
35
|
+
- Anything that should be a story.
|
|
36
|
+
- Anything that touches security/auth/payments without senior review.
|
|
37
|
+
|
|
38
|
+
## Decision tree
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
Question Yes No
|
|
42
|
+
Is there an AC to write? → full lifecycle → next
|
|
43
|
+
Does it touch architecture? → full lifecycle → next
|
|
44
|
+
Does it need UX input? → full lifecycle → next
|
|
45
|
+
Could it surprise a user? → full lifecycle → next
|
|
46
|
+
Is it ≤ 1 hour to a careful dev? → quick-dev → full lifecycle
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Inputs
|
|
12
50
|
|
|
13
|
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
- Small refactor with no behavior change
|
|
17
|
-
- Dependency bump
|
|
18
|
-
- Brownfield maintenance
|
|
51
|
+
- Issue / Slack message / PR comment describing the problem.
|
|
52
|
+
- Repo state.
|
|
53
|
+
- `.wize/config/tea.toml` (smoke-only policy when `policy = "advisory"`).
|
|
19
54
|
|
|
20
|
-
##
|
|
21
|
-
|
|
22
|
-
-
|
|
23
|
-
-
|
|
55
|
+
## Output
|
|
56
|
+
|
|
57
|
+
- Code change (single PR).
|
|
58
|
+
- Single-line entry appended to `.wize/implementation/quick-dev-log.md`.
|
|
59
|
+
- Conventional commit.
|
|
24
60
|
|
|
25
61
|
## Steps
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
62
|
+
|
|
63
|
+
### 1. Frame in one paragraph
|
|
64
|
+
|
|
65
|
+
What changes, why, and what could break. If the paragraph is hard to write, you're not in quick-dev territory.
|
|
66
|
+
|
|
67
|
+
### 2. Implement
|
|
68
|
+
|
|
69
|
+
- TDD when reasonable; smoke-test-and-fix when the cost of TDD is greater than the value.
|
|
70
|
+
- Run Shuri's reuse ladder (see `wize-agent-dev` persona) before writing anything new: does this need to exist → already in the codebase → stdlib → native/framework feature → installed dependency → one-liner → only then new code. Don't introduce new abstractions.
|
|
71
|
+
|
|
72
|
+
### 3. Hawkeye lite
|
|
73
|
+
|
|
74
|
+
- Smoke test: imports load, the changed flow doesn't break.
|
|
75
|
+
- Lint + format + type-check clean.
|
|
76
|
+
- No `tea-design / trace / review / nfr` written.
|
|
77
|
+
- Single one-line gate entry instead of full `gate.md`.
|
|
78
|
+
|
|
79
|
+
### 4. Log
|
|
80
|
+
|
|
81
|
+
Append one line to `.wize/implementation/quick-dev-log.md`:
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
2026-06-11 | shuri | dep-bump zod 3.22→3.23 | smoke PASS | PR #418
|
|
85
|
+
2026-06-11 | shuri | fix copy on /signin help link | smoke PASS | PR #419
|
|
86
|
+
2026-06-11 | shuri | rename UserService → AccountService | smoke PASS | PR #420
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### 5. Knowledge update (only if applicable)
|
|
90
|
+
|
|
91
|
+
Most quick-dev changes don't touch the baseline axes (copy edit, small refactor, dep bump in a stable lib). When they do — typically a **dependency bump** or a **rename that breaks a public contract** — add **one line** to the matching `document-project/*.md` file:
|
|
92
|
+
|
|
93
|
+
```markdown
|
|
94
|
+
## 2026-06-11
|
|
95
|
+
- Dependencies: bump zod 3.22 → 3.23. No API changes; validateInviteEmail unaffected.
|
|
96
|
+
- Conventions: `AccountService` replaces `UserService` (rename); imports updated repo-wide.
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Heuristic: *"would a new dev hitting `document-project/*.md` next week be misled if I don't add this?"* Yes → write. No → skip.
|
|
100
|
+
|
|
101
|
+
### 6. Commit + open PR
|
|
102
|
+
|
|
103
|
+
Conventional commit. PR description: the paragraph from step 1.
|
|
104
|
+
|
|
105
|
+
```
|
|
106
|
+
fix(auth): typo in error message for AC-04-2 follow-up
|
|
107
|
+
|
|
108
|
+
The error shown after rate-limit said "Sloow down" — corrected to "Slow down".
|
|
109
|
+
No behavior change; copy-only.
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## Quick-dev log template
|
|
113
|
+
|
|
114
|
+
```markdown
|
|
115
|
+
# Quick-dev log
|
|
116
|
+
|
|
117
|
+
| Date | Owner | What | Smoke | PR |
|
|
118
|
+
|---|---|---|---|---|
|
|
119
|
+
| 2026-06-11 | shuri | … | PASS | #N |
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## Done report (compact)
|
|
123
|
+
|
|
124
|
+
Report in four lines — no ceremony:
|
|
125
|
+
|
|
126
|
+
1. What changed + why.
|
|
127
|
+
2. Files changed.
|
|
128
|
+
3. Checks run + results (smoke, lint, format, type-check). Name any that couldn't run and why.
|
|
129
|
+
4. Recommended next action, if any.
|
|
31
130
|
|
|
32
131
|
## Disabling
|
|
33
|
-
|
|
132
|
+
|
|
133
|
+
To force every change through the full lifecycle (for very high-stakes products), set in `.wize/config/project.toml`:
|
|
134
|
+
|
|
135
|
+
```toml
|
|
136
|
+
[install]
|
|
137
|
+
quick_dev_enabled = false
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
Wizer respects this; quick-dev becomes unavailable; every change must go through Pepper → … → Hawkeye gate.
|
|
141
|
+
|
|
142
|
+
## Anti-patterns Shuri rejects in herself
|
|
143
|
+
|
|
144
|
+
- Reaching for quick-dev to skip writing an AC because she doesn't want to argue with Hill.
|
|
145
|
+
- Quick-dev that touches security/auth/payments.
|
|
146
|
+
- A "small refactor" that ends up changing behavior.
|
|
147
|
+
- Skipping the log entry.
|
|
148
|
+
|
|
149
|
+
## Hand-off
|
|
150
|
+
|
|
151
|
+
> `dep-bump zod 3.23` is in. PR #418, smoke PASS. Logged. No further TEA artifacts; moving on.
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
---
|
|
2
|
+
code: wize-release
|
|
3
|
+
description: "Use quando todas as stories do sprint estiverem gated e você precisar gerar release: bump de versão, changelog e tag git."
|
|
4
|
+
name: Release
|
|
5
|
+
phase: 4-implementation
|
|
6
|
+
owner: wize-agent-dev # Shuri + Maria Hill
|
|
7
|
+
status: ready
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Release
|
|
11
|
+
|
|
12
|
+
**Goal.** Bump de versão, changelog a partir das stories gated e tag git. O release é o passo entre "todas as stories passaram no gate" e a retrospectiva.
|
|
13
|
+
|
|
14
|
+
Shuri executa. Maria Hill confirma o escopo (quais epics entram).
|
|
15
|
+
|
|
16
|
+
## Pré-requisitos
|
|
17
|
+
|
|
18
|
+
Antes de iniciar, verificar:
|
|
19
|
+
|
|
20
|
+
1. **Sprint ativo** — `sprint-status.yaml` deve ter `development_status` com stories.
|
|
21
|
+
2. **Todas as stories gated** — cada story no sprint ativo deve estar `done` no `sprint-status.yaml`. Stories com gate `FAIL` bloqueiam o release. Stories com `CONCERNS` precisam de waiver documentado.
|
|
22
|
+
3. **Git limpo** — `git status --porcelain` deve estar vazio (ou conter apenas arquivos não rastreados que não fazem parte do release).
|
|
23
|
+
4. **Branch main** — releases saem da `main`. Se estiver em feature branch, abortar e orientar merge via PR.
|
|
24
|
+
|
|
25
|
+
Se qualquer pré-requisito falhar, reportar o bloqueio e parar. Não fazer release parcial.
|
|
26
|
+
|
|
27
|
+
## Inputs
|
|
28
|
+
|
|
29
|
+
- `.wize/implementation/sprint-status.yaml` — stories concluídas
|
|
30
|
+
- `.wize/solutioning/stories/{epic}/*.md` — detalhes das stories
|
|
31
|
+
- `package.json` — versão atual
|
|
32
|
+
- `CHANGELOG.md` — changelog existente (se houver)
|
|
33
|
+
- `git tag --list 'v*'` — tags existentes
|
|
34
|
+
|
|
35
|
+
## Outputs
|
|
36
|
+
|
|
37
|
+
- `package.json` com versão atualizada
|
|
38
|
+
- `CHANGELOG.md` atualizado com a nova versão
|
|
39
|
+
- Tag git `v{semver}`
|
|
40
|
+
- `sprint-status.yaml` atualizado (sprint marcado como concluído)
|
|
41
|
+
- Resumo do release no terminal
|
|
42
|
+
|
|
43
|
+
## Steps
|
|
44
|
+
|
|
45
|
+
### 1. Verificar pré-requisitos
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
git status --porcelain # deve estar vazio
|
|
49
|
+
git branch --show-current # deve ser main
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Ler `sprint-status.yaml` e validar que todas as stories do sprint ativo estão `done`. Se houver stories `backlog`, `ready-for-dev`, `in-progress` ou `review`, listar cada uma e abortar.
|
|
53
|
+
|
|
54
|
+
### 2. Coletar stories concluídas
|
|
55
|
+
|
|
56
|
+
Varrer `development_status` no `sprint-status.yaml`. Para cada story com status `done`:
|
|
57
|
+
|
|
58
|
+
1. Localizar o arquivo da story em `.wize/solutioning/stories/{epic}/{story}.md`
|
|
59
|
+
2. Extrair do frontmatter: `story_id`, `epic`, `status`
|
|
60
|
+
3. Extrair do corpo: título (linha `# Story:`), acceptance criteria
|
|
61
|
+
|
|
62
|
+
Agrupar por epic. Se o epic tiver `epic_id` no `sprint-status.yaml`, usar o nome do arquivo do epic em `.wize/solutioning/epics/` para obter o título legível.
|
|
63
|
+
|
|
64
|
+
### 3. Determinar o bump de versão
|
|
65
|
+
|
|
66
|
+
Ler a versão atual de `package.json`:
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
Versão atual: 0.11.0
|
|
70
|
+
Qual o bump?
|
|
71
|
+
1. patch (0.11.1) — correções, hotfix, docs
|
|
72
|
+
2. minor (0.12.0) — novas features compatíveis
|
|
73
|
+
3. major (1.0.0) — breaking changes
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Em modo interativo, perguntar ao usuário. Em modo não-interativo, usar o primeiro argumento (`patch`, `minor` ou `major`). Se nenhum argumento for passado, default `patch`.
|
|
77
|
+
|
|
78
|
+
Calcular a nova versão com `semver.inc(current, bump)` — usar Node built-in (regex parse + increment, sem dependência externa).
|
|
79
|
+
|
|
80
|
+
### 4. Gerar changelog
|
|
81
|
+
|
|
82
|
+
Delegar a geração do changelog ao `wize-changelog`:
|
|
83
|
+
|
|
84
|
+
1. Invocar o fluxo do `wize-changelog` com a nova versão e a lista de stories coletadas no passo 2.
|
|
85
|
+
2. O changelog é gerado no formato Keep a Changelog e pré-pendido ao `CHANGELOG.md`.
|
|
86
|
+
|
|
87
|
+
Se `CHANGELOG.md` não existir, criar com o cabeçalho padrão.
|
|
88
|
+
|
|
89
|
+
### 5. Bump de versão
|
|
90
|
+
|
|
91
|
+
Atualizar o campo `version` em `package.json` com a nova versão. Preservar a formatação existente (indentação, aspas duplas).
|
|
92
|
+
|
|
93
|
+
### 6. Commit e tag
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
git add package.json CHANGELOG.md
|
|
97
|
+
git commit -m "chore: release v{version}"
|
|
98
|
+
git tag v{version} -m "Release v{version}"
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
A mensagem de commit deve listar os epics incluídos no release.
|
|
102
|
+
|
|
103
|
+
### 7. Atualizar sprint-status.yaml
|
|
104
|
+
|
|
105
|
+
Adicionar ao `sprint-status.yaml`:
|
|
106
|
+
|
|
107
|
+
```yaml
|
|
108
|
+
release:
|
|
109
|
+
version: "{version}"
|
|
110
|
+
date: "{YYYY-MM-DD}"
|
|
111
|
+
sprint: "{active_cycle}"
|
|
112
|
+
stories_released: {count}
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Marcar o sprint como concluído e adicionar entrada de retrospectiva pendente.
|
|
116
|
+
|
|
117
|
+
### 8. Resumo
|
|
118
|
+
|
|
119
|
+
Emitir no terminal:
|
|
120
|
+
|
|
121
|
+
```
|
|
122
|
+
✓ Release v{version} criado
|
|
123
|
+
|
|
124
|
+
Epics incluídos:
|
|
125
|
+
- {epic_name} ({story_count} stories)
|
|
126
|
+
|
|
127
|
+
Changelog: CHANGELOG.md
|
|
128
|
+
Tag: v{version}
|
|
129
|
+
Commit: {commit_hash}
|
|
130
|
+
|
|
131
|
+
Próximos passos:
|
|
132
|
+
- git push origin main --tags
|
|
133
|
+
- /wize-retrospective
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
**Não executar `git push` automaticamente.** O push é sempre manual — o desenvolvedor revisa antes de publicar.
|
|
137
|
+
|
|
138
|
+
## Bump semver (built-in, zero-dep)
|
|
139
|
+
|
|
140
|
+
```js
|
|
141
|
+
function bumpVersion(current, type) {
|
|
142
|
+
const [major, minor, patch] = current.split('.').map(Number);
|
|
143
|
+
switch (type) {
|
|
144
|
+
case 'major': return `${major + 1}.0.0`;
|
|
145
|
+
case 'minor': return `${major}.${minor + 1}.0`;
|
|
146
|
+
case 'patch': return `${major}.${minor}.${patch + 1}`;
|
|
147
|
+
default: throw new Error(`Tipo de bump inválido: ${type}. Use patch, minor ou major.`);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
## Anti-patterns
|
|
153
|
+
|
|
154
|
+
- Fazer release com stories não gated — o gate existe para proteger a main.
|
|
155
|
+
- Fazer release de feature branch — releases saem da main.
|
|
156
|
+
- Push automático — o desenvolvedor revisa antes de publicar.
|
|
157
|
+
- Pular o changelog — "depois eu escrevo" = nunca escreve.
|
|
158
|
+
- Bump manual de versão — usar o bump semver para evitar off-by-one.
|
|
159
|
+
|
|
160
|
+
## Hand-off
|
|
161
|
+
|
|
162
|
+
> Release v{version} criado. Changelog atualizado, tag aplicada. Execute `git push origin main --tags` quando revisar. Depois: `/wize-retrospective`.
|