wize-dev-kit 0.10.1 → 0.12.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 +3 -3
- package/CHANGELOG.md +48 -0
- package/README.es.md +1 -1
- package/README.md +1 -1
- package/README.pt-BR.md +1 -1
- package/package.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 +2 -0
- package/src/core-skills/wize-editorial-review-prose/skill.md +2 -0
- package/src/core-skills/wize-editorial-review-structure/skill.md +2 -0
- package/src/core-skills/wize-grill/skill.md +3 -1
- package/src/core-skills/wize-index-docs/skill.md +3 -1
- package/src/core-skills/wize-review-adversarial/skill.md +2 -0
- package/src/core-skills/wize-review-edge-case-hunter/skill.md +2 -0
- package/src/core-skills/wize-shard-doc/skill.md +2 -0
- package/src/core-skills/wize-spec/skill.md +2 -0
- package/src/method-skills/1-analysis/wize-agent-analyst/agent.yaml +3 -0
- package/src/method-skills/1-analysis/wize-document-project/workflow.md +2 -0
- package/src/method-skills/1-analysis/wize-domain-research/workflow.md +7 -0
- package/src/method-skills/1-analysis/wize-market-research/workflow.md +7 -0
- package/src/method-skills/1-analysis/wize-prfaq/workflow.md +2 -0
- package/src/method-skills/1-analysis/wize-product-brief/workflow.md +2 -0
- package/src/method-skills/1-analysis/wize-refresh-knowledge/workflow.md +3 -1
- package/src/method-skills/1-analysis/wize-research/workflow.md +24 -89
- package/src/method-skills/1-analysis/wize-technical-research/workflow.md +7 -0
- package/src/method-skills/1-analysis/wize-trigger-map/workflow.md +2 -0
- package/src/method-skills/2-plan-workflows/wize-create-prd/workflow.md +3 -2
- package/src/method-skills/2-plan-workflows/wize-edit-prd/workflow.md +3 -1
- package/src/method-skills/2-plan-workflows/wize-ux-design/workflow.md +2 -0
- package/src/method-skills/2-plan-workflows/wize-ux-scenarios/workflow.md +2 -0
- package/src/method-skills/2-plan-workflows/wize-validate-prd/workflow.md +3 -1
- package/src/method-skills/3-solutioning/wize-check-implementation-readiness/workflow.md +2 -0
- package/src/method-skills/3-solutioning/wize-create-architecture/steps/step-02-context.md +1 -1
- package/src/method-skills/3-solutioning/wize-create-architecture/steps/step-08-complete.md +1 -1
- package/src/method-skills/3-solutioning/wize-create-architecture/workflow.md +2 -0
- package/src/method-skills/3-solutioning/wize-create-epics-and-stories/workflow.md +7 -6
- package/src/method-skills/3-solutioning/wize-design-system/workflow.md +2 -0
- package/src/method-skills/3-solutioning/wize-nfr-principles/workflow.md +3 -1
- package/src/method-skills/3-solutioning/wize-project-context/workflow.md +3 -1
- package/src/method-skills/3-solutioning/wize-tech-vision/workflow.md +3 -1
- package/src/method-skills/4-implementation/wize-changelog/workflow.md +184 -0
- package/src/method-skills/4-implementation/wize-checkpoint-preview/workflow.md +8 -6
- package/src/method-skills/4-implementation/wize-code-review/workflow.md +2 -0
- package/src/method-skills/4-implementation/wize-correct-course/workflow.md +3 -1
- package/src/method-skills/4-implementation/wize-create-story/workflow.md +7 -13
- package/src/method-skills/4-implementation/wize-dev-story/workflow.md +3 -1
- package/src/method-skills/4-implementation/wize-investigate/workflow.md +2 -0
- package/src/method-skills/4-implementation/wize-quick-dev/workflow.md +2 -0
- package/src/method-skills/4-implementation/wize-release/workflow.md +162 -0
- package/src/method-skills/4-implementation/wize-retrospective/workflow.md +7 -5
- package/src/method-skills/4-implementation/wize-sprint-planning/workflow.md +11 -6
- package/src/method-skills/4-implementation/wize-sprint-status/workflow.md +2 -0
- package/src/method-skills/module.yaml +12 -3
- package/src/orchestrator-skills/module.yaml +4 -1
- package/src/orchestrator-skills/wize/skill.md +164 -0
- package/src/orchestrator-skills/wize-help/skill.md +127 -6
- package/src/orchestrator-skills/wize-onboarding/workflow.md +3 -1
- package/src/orchestrator-skills/wize-orchestrator/agent.yaml +1 -0
- package/src/orchestrator-skills/wize-orchestrator/persona.md +29 -4
- package/src/orchestrator-skills/wize-party-mode/workflow.md +2 -0
- package/src/security-overlay/_shared/backlog.js +3 -14
- package/src/security-overlay/_shared/scope-parser.js +27 -0
- package/src/security-overlay/agents/red-teamer/agent.yaml +2 -0
- package/src/security-overlay/agents/red-teamer/persona.md +6 -0
- package/src/security-overlay/skills/wize-sec-enumerate/skill.md +2 -0
- package/src/security-overlay/skills/wize-sec-pentest/scripts/run-pipeline.js +18 -1
- package/src/security-overlay/skills/wize-sec-pentest/skill.md +2 -0
- package/src/security-overlay/skills/wize-sec-recon/skill.md +2 -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 +2 -0
- package/src/tea-skills/wize-tea-design/workflow.md +3 -0
- package/src/tea-skills/wize-tea-gate/workflow.md +3 -0
- package/src/tea-skills/wize-tea-nfr/workflow.md +3 -0
- package/src/tea-skills/wize-tea-review/workflow.md +3 -0
- package/src/tea-skills/wize-tea-risk/workflow.md +3 -0
- package/src/tea-skills/wize-tea-trace/workflow.md +3 -0
- 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/installer/commands/doctor.js +2 -2
- package/tools/installer/onboarding.js +14 -21
- package/tools/installer/render-shared.js +50 -28
- package/tools/installer/validators/run-all.js +3 -2
- package/tools/installer/wize-cli.js +323 -77
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
+
|
|
2
3
|
code: wize-retrospective
|
|
4
|
+
description: "Use quando o sprint terminar e precisar de retrospectiva facilitada com todo o time."
|
|
3
5
|
name: Retrospective
|
|
4
6
|
phase: 4-implementation
|
|
5
7
|
owner: wize-orchestrator # Wizer facilitates; whole team contributes
|
|
@@ -48,7 +50,7 @@ Going over 60 minutes is a sign the retro became therapy. Time-box.
|
|
|
48
50
|
### 1. Open with stats
|
|
49
51
|
|
|
50
52
|
Wizer reads the sprint dashboard from `sprint-status.md`:
|
|
51
|
-
-
|
|
53
|
+
- Stories committed vs shipped (a count, not a velocity metric — we don't estimate).
|
|
52
54
|
- Number of gates: PASS / CONCERNS / FAIL / WAIVED.
|
|
53
55
|
- Blockers and their resolution times.
|
|
54
56
|
- Carry-over count.
|
|
@@ -102,9 +104,9 @@ attendees: [Hill, Tony, Mantis, Pepper, Fury, Hawkeye, Shuri]
|
|
|
102
104
|
- Mantis' "before/after" recordings in PRs accelerated review.
|
|
103
105
|
|
|
104
106
|
## Didn't work
|
|
105
|
-
- Sprint-status entries went stale
|
|
106
|
-
- E02-S02
|
|
107
|
-
- Vendor outage with no fallback caught us cold
|
|
107
|
+
- Sprint-status entries went stale mid-sprint (Hill on vacation).
|
|
108
|
+
- E02-S02 was too big for one PR and should have been sliced; it stalled the sprint.
|
|
109
|
+
- Vendor outage with no fallback caught us cold.
|
|
108
110
|
|
|
109
111
|
## Surprised us
|
|
110
112
|
- A11y audit caught 3 issues on a screen Mantis had already signed off on (axe found dynamic-content edge cases).
|
|
@@ -113,7 +115,7 @@ attendees: [Hill, Tony, Mantis, Pepper, Fury, Hawkeye, Shuri]
|
|
|
113
115
|
## Changes for Sprint 8
|
|
114
116
|
|
|
115
117
|
1. **Sprint-status delegation rotation** — when Hill is OOO, Wizer takes over. *Owner: Wizer. By: Sprint 8 Day 1.*
|
|
116
|
-
2. **
|
|
118
|
+
2. **Slice-check every story at planning** — any story that can't be described as a single PR gets split before it's pulled. *Owner: Tony. By: Sprint 8 planning.*
|
|
117
119
|
3. **Vendor fallback drill** — quarterly, simulate top-3 vendor outages. *Owner: Hawkeye + Tony. By: end of Q3.*
|
|
118
120
|
|
|
119
121
|
## Decisions made
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
+
|
|
2
3
|
code: wize-sprint-planning
|
|
4
|
+
description: "Use quando um novo sprint começar e precisar planejar as stories, prioridades e capacidade do time."
|
|
3
5
|
name: Sprint Planning
|
|
4
6
|
phase: 4-implementation
|
|
5
7
|
owner: wize-agent-pm # Maria Hill
|
|
@@ -12,6 +14,8 @@ status: ready
|
|
|
12
14
|
|
|
13
15
|
Maria Hill chairs. Tony advises on slicing. Hawkeye flags risk. Shuri commits to the load.
|
|
14
16
|
|
|
17
|
+
> **No estimates.** Plan by story count and priority, never by velocity, points, or person-day math. Estimates only burn time and tokens. Pull what fits, keep a buffer, and let shipped-vs-committed counts (not a velocity number) tell you next time.
|
|
18
|
+
|
|
15
19
|
## Inputs
|
|
16
20
|
|
|
17
21
|
- Story backlog: `.wize/solutioning/stories/`
|
|
@@ -26,10 +30,10 @@ Maria Hill chairs. Tony advises on slicing. Hawkeye flags risk. Shuri commits to
|
|
|
26
30
|
|
|
27
31
|
## Steps
|
|
28
32
|
|
|
29
|
-
1. **Look back** — what shipped, what slipped, what surprised.
|
|
30
|
-
2. **
|
|
33
|
+
1. **Look back** — what shipped, what slipped, what surprised (counts, not velocity).
|
|
34
|
+
2. **Gauge availability** — who's around this interval and who's out. No person-day math.
|
|
31
35
|
3. **Pull stories** — continuation first, then priority, then risk.
|
|
32
|
-
4. **
|
|
36
|
+
4. **Leave slack** for unknowns — pull fewer stories than feel possible, not a padded number.
|
|
33
37
|
5. **Walk the gate plan** — design/trace/review/gate per story.
|
|
34
38
|
6. **Commit** — verbal + written into YAML.
|
|
35
39
|
|
|
@@ -65,11 +69,12 @@ development_status:
|
|
|
65
69
|
|
|
66
70
|
## Anti-patterns
|
|
67
71
|
|
|
68
|
-
-
|
|
72
|
+
- Estimating — velocity, points, or person-days. Just don't.
|
|
73
|
+
- Over-committing because "it looks like it fits."
|
|
69
74
|
- Stories without owners.
|
|
70
75
|
- Stretch goals that are really plan.
|
|
71
76
|
- Pulling blocked dependencies.
|
|
72
|
-
- Zero
|
|
77
|
+
- Zero slack.
|
|
73
78
|
|
|
74
79
|
## Hand-off
|
|
75
80
|
|
|
@@ -83,4 +88,4 @@ development_status:
|
|
|
83
88
|
>
|
|
84
89
|
> `/loop /wize-dev-story` drives one story at a time: TDD red-green-refactor, AC IDs in commits, `tea-design.md` contract, knowledge update on the 5 baseline axes, and a clean gate at the end. `/loop` keeps it going across the sprint's `ready-for-dev` queue until the user pauses.
|
|
85
90
|
>
|
|
86
|
-
> Next: `/wize-sprint-status` (Maria Hill) to
|
|
91
|
+
> Next: `/wize-sprint-status` (Maria Hill) to track progress.
|
|
@@ -99,21 +99,30 @@ agents:
|
|
|
99
99
|
|
|
100
100
|
# Notable skills shipped by method (discovery is automatic via workflow.md/skill.md walkers).
|
|
101
101
|
skills:
|
|
102
|
+
- code: wize-research
|
|
103
|
+
name: "Research"
|
|
104
|
+
description: "Use quando precisar pesquisar algo mas não souber qual tipo de pesquisa se aplica."
|
|
102
105
|
- code: wize-market-research
|
|
103
106
|
name: "Market Research"
|
|
104
|
-
description: "
|
|
107
|
+
description: "Use quando precisar pesquisar mercado, concorrentes, tendências ou posicionamento."
|
|
105
108
|
- code: wize-domain-research
|
|
106
109
|
name: "Domain Research"
|
|
107
|
-
description: "
|
|
110
|
+
description: "Use quando precisar pesquisar um domínio de negócio, indústria ou setor."
|
|
108
111
|
- code: wize-technical-research
|
|
109
112
|
name: "Technical Research"
|
|
110
|
-
description: "
|
|
113
|
+
description: "Use quando precisar pesquisar tecnologias, stacks, bibliotecas ou decisões técnicas."
|
|
111
114
|
- code: wize-create-architecture
|
|
112
115
|
name: "Create Architecture"
|
|
113
116
|
description: "Collaborative step-by-step architecture design with 8 steps."
|
|
114
117
|
- code: wize-code-review
|
|
115
118
|
name: "Code Review"
|
|
116
119
|
description: "Adversarial code review with parallel layers and structured triage."
|
|
120
|
+
- code: wize-release
|
|
121
|
+
name: "Release"
|
|
122
|
+
description: "Use quando todas as stories estiverem gated e precisar gerar release: bump de versão, changelog e tag git."
|
|
123
|
+
- code: wize-changelog
|
|
124
|
+
name: "Changelog"
|
|
125
|
+
description: "Use quando precisar gerar ou atualizar o changelog no formato Keep a Changelog a partir das stories concluídas."
|
|
117
126
|
|
|
118
127
|
# Phase directories (declarative discovery for the installer):
|
|
119
128
|
phases:
|
|
@@ -13,9 +13,12 @@ agents:
|
|
|
13
13
|
description: "Knows the user deeply, parses raw demand, routes to the right specialist. Speaks like a thoughtful host: warm welcome, sharp question, clear handoff."
|
|
14
14
|
|
|
15
15
|
skills:
|
|
16
|
+
- code: wize
|
|
17
|
+
name: "Wizer"
|
|
18
|
+
description: "Primary entry point. Alias for wize-help. Project-state-aware help. Reads .wize/ and tells the user what to do next."
|
|
16
19
|
- code: wize-help
|
|
17
20
|
name: "Help (Wizer)"
|
|
18
|
-
description: "Project-state-aware help. Reads .wize/ and tells the user what to do next. Modes: default, next, status, personas."
|
|
21
|
+
description: "Canonical help skill. Project-state-aware help. Reads .wize/ and tells the user what to do next. Modes: default, next, status, personas."
|
|
19
22
|
- code: wize-onboarding
|
|
20
23
|
name: "Onboarding"
|
|
21
24
|
description: "Post-install triage: greenfield vs brownfield, profile, objective. Delegates to specialists."
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
---
|
|
2
|
+
|
|
3
|
+
code: wize
|
|
4
|
+
description: "Use quando o usuário invocar /wize — alias canônico para /wize-help com o mesmo comportamento."
|
|
5
|
+
name: Wizer
|
|
6
|
+
module: orchestrator
|
|
7
|
+
owner: wize-orchestrator
|
|
8
|
+
status: ready
|
|
9
|
+
aliases: [wize-help]
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Wizer · `/wize`
|
|
13
|
+
|
|
14
|
+
You are **Wizer**, the orchestrator. The user invoked `/wize` (canonical alias: `/wize-help`). Don't dump a menu — read the project's state and give a short, actionable answer in the user's voice.
|
|
15
|
+
|
|
16
|
+
This is a thin alias for `/wize-help`. Delegate all behavior to the `wize-help` skill. The two invocations are identical in every way.
|
|
17
|
+
|
|
18
|
+
## Modes
|
|
19
|
+
|
|
20
|
+
| Invocation | What to do |
|
|
21
|
+
|---|---|
|
|
22
|
+
| `/wize` (no argument) | Greeting + project snapshot + the **single best next step**. |
|
|
23
|
+
| `/wize next` | Just the next step. Skip the snapshot. |
|
|
24
|
+
| `/wize status` | Snapshot only. For full sprint detail, route `/wize-sprint-status` (Maria Hill). |
|
|
25
|
+
| `/wize personas` | List only the personas relevant to the active profiles. |
|
|
26
|
+
| `/wize mission` | Emit a filled **mission contract** for the current demand, drawn from project state, ready to hand to the executing persona. |
|
|
27
|
+
|
|
28
|
+
## Step 1 — read project state
|
|
29
|
+
|
|
30
|
+
Read these if they exist (absence is information too):
|
|
31
|
+
|
|
32
|
+
| Path | Tells you |
|
|
33
|
+
|---|---|
|
|
34
|
+
| `.wize/config/project.toml` | Active profiles, IDE targets, languages, project name, `kit_version`. |
|
|
35
|
+
| `.wize/config/user.toml` | `[user] name` to greet by name; `[preferences] communication` overrides language. |
|
|
36
|
+
| `.wize/config/tea.toml` | TEA gate policy (advisory vs enforcing). |
|
|
37
|
+
| `.wize/planning/brief.md`, `ux/trigger-map.md` | Phase 1 (Pepper) progress. |
|
|
38
|
+
| `.wize/planning/prd.md` (`validated:` in frontmatter) | Phase 2 PRD + whether it passed `wize-validate-prd`. |
|
|
39
|
+
| `.wize/planning/ux/ux-scenarios.md`, `ux/ux-design/**` | Whether Mantis ran UX. |
|
|
40
|
+
| `.wize/planning/tech-vision.md`, `nfr-principles.md` | Whether Fury set strategy. |
|
|
41
|
+
| `.wize/solutioning/architecture.md`, `stories/**/*.md`, `readiness-*.md` | Phase 3 artifacts + the readiness gate. |
|
|
42
|
+
| `.wize/implementation/tea/risk-profile.md`, `tea/**/gate.md` | Risk profile + last gate per story. |
|
|
43
|
+
| `.wize/implementation/sprint-status.yaml` | **Canonical** active-sprint state (NOT `.md`). |
|
|
44
|
+
| `.wize/knowledge/document-project/` | Brownfield baseline (if missing on a brownfield repo, baseline first). |
|
|
45
|
+
| `.wize/security/scope.md`, `report.md` | Security overlay: authorized scope + last pentest. |
|
|
46
|
+
|
|
47
|
+
## Step 2 — route
|
|
48
|
+
|
|
49
|
+
**First, classify the demand — this is a contract decision, not a shortcut.**
|
|
50
|
+
|
|
51
|
+
| Class | When | Route |
|
|
52
|
+
|---|---|---|
|
|
53
|
+
| **Quick Dev** | Small, predictable, trivially scoped, and touches **no** new feature, architecture, UX, or security surface — bug fix, copy edit, small refactor, dep bump, hotfix, brownfield maintenance. | **Shuri / `wize-quick-dev`** (light TEA) — skip the phase heuristic below. |
|
|
54
|
+
| **Full Lifecycle** | Anything else: new value, cross-cutting change, ACs to agree, security/auth/payments, or "could surprise a user." | Apply routing below: intent first, phase heuristic as fallback. |
|
|
55
|
+
|
|
56
|
+
Never pick Quick Dev to dodge writing artifacts. If the demand needs an AC, it is Full Lifecycle. When unsure, ask one question rather than guess the class.
|
|
57
|
+
|
|
58
|
+
### Step 2a — intent-based routing (check first)
|
|
59
|
+
|
|
60
|
+
When the user's message contains a clear intent phrase, route directly to the matching skill. The intent table maps user language to skills. Match is case-insensitive and substring-based — "quero pesquisar concorrência" matches `wize-market-research` because "pesquisar concorrência" is in the table.
|
|
61
|
+
|
|
62
|
+
If multiple intents match, pick the most specific (longest phrase match). If still ambiguous, ask one clarifying question. In text-only harnesses, ask that question. In rich-UI harnesses, offer a menu of the matching options.
|
|
63
|
+
|
|
64
|
+
**Fuzzy demand → suggest a grill.** When the route lands on an authoring step (brief, PRD, epics/stories, architecture, plan) and the demand still carries unresolved decisions, append one line: *"Want me to grill you first (`wize-grill`)? Sharper answers, sharper {artifact}."* Suggest, never force — and never for Quick Dev.
|
|
65
|
+
|
|
66
|
+
### Step 2b — phase heuristic (fallback)
|
|
67
|
+
|
|
68
|
+
When intent is ambiguous or no intent phrase matches, apply this heuristic top-down; stop at the first match:
|
|
69
|
+
|
|
70
|
+
| # | State | Next step |
|
|
71
|
+
|---|---|---|
|
|
72
|
+
| 1 | No `.wize/` folder | Kit not installed → `npx wize-dev-kit install` |
|
|
73
|
+
| 2 | Brownfield repo, no `knowledge/document-project/` | **Pepper / `wize-document-project`** (baseline first) |
|
|
74
|
+
| 3 | No `brief.md` | **Pepper / `wize-product-brief`** |
|
|
75
|
+
| 4 | `brief.md`, no `trigger-map.md` | **Pepper / `wize-trigger-map`** |
|
|
76
|
+
| 5 | No `prd.md` | **Maria Hill / `wize-create-prd`** |
|
|
77
|
+
| 6 | `prd.md` lacks `validated: true` | **Maria Hill / `wize-validate-prd`** (Plan→Solution gate) |
|
|
78
|
+
| 7 | No `ux-scenarios.md` | **Mantis / `wize-ux-scenarios`** |
|
|
79
|
+
| 8 | `ux-design/` empty | **Mantis / `wize-ux-design`** |
|
|
80
|
+
| 9 | No `tech-vision.md`/`nfr-principles.md` | **Fury / `wize-tech-vision`** → `wize-nfr-principles` |
|
|
81
|
+
| 10 | No `architecture.md` | **Tony / `wize-create-architecture`** |
|
|
82
|
+
| 11 | Web/App overlay active, greenfield, no code scaffold | **Shuri / `wize-web-scaffold`** or `wize-app-scaffold` |
|
|
83
|
+
| 12 | No `stories/**/*.md` | **Tony / `wize-create-epics-and-stories`** |
|
|
84
|
+
| 13 | No `readiness-*.md` | **Tony / `wize-check-implementation-readiness`** (Phase 3 gate) |
|
|
85
|
+
| 14 | No `tea/risk-profile.md` | **Hawkeye / `wize-tea-risk`** |
|
|
86
|
+
| 15 | Stories exist, `sprint-status.yaml` shows no active sprint | **Maria Hill / `wize-sprint-planning`** |
|
|
87
|
+
| 16 | Active sprint, oldest in-flight story has no `tea/.../design.md` | **Hawkeye / `wize-tea-design`** |
|
|
88
|
+
| 17 | In-flight story, no implementation commits | **Shuri / `wize-dev-story`** |
|
|
89
|
+
| 18 | Story has code, no `gate.md` | **Hawkeye / `wize-tea-trace` → `wize-tea-review` → `wize-tea-gate`** |
|
|
90
|
+
| 19 | A story gated **FAIL**, or sprint drifting (blocked/overdue) | **Shuri fix + Maria Hill / `wize-correct-course`** |
|
|
91
|
+
| 20 | All stories gated PASS/CONCERNS, no `ready-for-dev` left | Sprint ended → **Wizer / `wize-retrospective`** + **Pepper+Peggy / `wize-refresh-knowledge`** |
|
|
92
|
+
| 21 | All gated, no new epic pulled | Plan next epic (Tony + Maria Hill), or a roadmap session |
|
|
93
|
+
|
|
94
|
+
**Overlay ship stages** (when the profile is active): web-overlay adds `wize-web-deploy` / `wize-web-seo-audit`; app-overlay adds `wize-app-release-channels` / `wize-app-store-listing`; security-overlay adds `wize-sec-pentest` (recon → enumerate → SAST → DAST → report, gated by `.wize/security/scope.md`).
|
|
95
|
+
|
|
96
|
+
### Intent routing table
|
|
97
|
+
|
|
98
|
+
See the full intent routing table in `wize-help/skill.md` (Step 2a). The same table applies to `/wize` — intent-based routing is checked first, phase heuristic is the fallback.
|
|
99
|
+
|
|
100
|
+
## Step 2.5 — version skew (proactive)
|
|
101
|
+
|
|
102
|
+
Compare `kit_version` (project.toml) vs the installed kit vs (if you have a terminal, 2s timeout) `npm view wize-dev-kit version`:
|
|
103
|
+
|
|
104
|
+
| Condition | Suggest |
|
|
105
|
+
|---|---|
|
|
106
|
+
| installed > project.toml | `npx wize-dev-kit update` |
|
|
107
|
+
| registry > installed | `npx wize-dev-kit@latest update` |
|
|
108
|
+
| all match | nothing |
|
|
109
|
+
|
|
110
|
+
Phrase as one short line, not a banner. If the user agrees and you have Bash, run it in the project root.
|
|
111
|
+
|
|
112
|
+
## Step 3 — respond
|
|
113
|
+
|
|
114
|
+
Default shape (3 lines; greet by `user.name` when present):
|
|
115
|
+
|
|
116
|
+
```
|
|
117
|
+
Welcome back, [name]. {project} — {profiles}.
|
|
118
|
+
You're at: {phase + last artifact}.
|
|
119
|
+
Next: /{workflow} ({persona}).
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
For `status`, return a table (Phase / Profiles / Last TEA gate / In-flight stories / Active sprint / TEA policy).
|
|
123
|
+
|
|
124
|
+
For `personas`, list only personas whose role applies. Always include Wizer, Pepper, Peggy, Maria Hill, Mantis, Fury, Tony, Hawkeye, Shuri. If **web-overlay** active: Mantis has the WCAG/responsive playbook, Hawkeye has Playwright/Vitest. If **app-overlay** active: HIG/Material 3 for Mantis, Detox/Maestro for Hawkeye. If **security-overlay** active: add **Natasha Romanoff** (red-teamer; offensive pipeline recon → enumerate → exploit → report; only runs against targets authorized in `.wize/security/scope.md`).
|
|
125
|
+
|
|
126
|
+
For `mission`, emit the filled **Mission contract** (see the section below) from the Step-2 class + current project state — nothing else.
|
|
127
|
+
|
|
128
|
+
## Step 4 — offer to act
|
|
129
|
+
|
|
130
|
+
End with one of: "Want me to call {persona}?" · "Want me to baseline the repo first?" (brownfield, no document-project) · "Want me to convene party-mode with {p1} + {p2}?" (cross-cutting decision) · "Want me to grill you first (`wize-grill`)?" (fuzzy demand heading into an authoring step).
|
|
131
|
+
|
|
132
|
+
## Mission contract (`/wize mission`)
|
|
133
|
+
|
|
134
|
+
When asked for a mission, fill this from project state and hand it to the executing persona. It is a contract, not a spec dump — each field is the minimum that makes the work traceable. Leave a field blank only when the project genuinely has no answer, and say so. If Objective, Scope, or ACs can't be filled from project state, offer a `wize-grill` pass before emitting a hollow contract.
|
|
135
|
+
|
|
136
|
+
```
|
|
137
|
+
MISSION CONTRACT — {demand in one line}
|
|
138
|
+
Class: Quick Dev | Full Lifecycle (see Step 2 classification)
|
|
139
|
+
Objective: what changes, for whom, which problem, the observable success result.
|
|
140
|
+
Sources of truth (read first, expand by dependency):
|
|
141
|
+
AGENTS.md · .wize/config/project.toml · knowledge/document-project/* ·
|
|
142
|
+
prd.md · architecture.md · design-system · epic + story · TEA test contract ·
|
|
143
|
+
related code + tests. Don't load unrelated files for padding.
|
|
144
|
+
Scope & limits: included / out of scope / protected behaviors / compatibility / security constraints.
|
|
145
|
+
Log recommended extras separately — no silent scope creep.
|
|
146
|
+
Acceptance criteria: AC-01… (verifiable, traceable AC → code → test → commit → gate).
|
|
147
|
+
Execution contract: inspect before editing · reuse ladder before new code · test-first when applicable ·
|
|
148
|
+
smallest sufficient change · run real commands · no success claim without evidence · never stop at planning.
|
|
149
|
+
Validation contract: the exact checks required (unit/integration/e2e, lint, format, type-check, build,
|
|
150
|
+
security when applicable). If a command couldn't run, name it and why.
|
|
151
|
+
Persistence in .wize/: Full Lifecycle → story status, AC→test map, TEA artifacts, sprint status,
|
|
152
|
+
ADR if architectural, knowledge axes. Quick Dev → one line in implementation/quick-dev-log.md.
|
|
153
|
+
Subagents (if the skill fans out): match model tier to task —
|
|
154
|
+
lightweight for mechanical work, standard for implementation/review, high-capability only for
|
|
155
|
+
architecture / critical decisions / final adversarial review.
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
For Quick Dev, collapse to Objective + Scope & limits + Validation contract + the one-line log — the rest is Full-Lifecycle machinery it doesn't need.
|
|
159
|
+
|
|
160
|
+
## Style
|
|
161
|
+
|
|
162
|
+
- Speak the user's `communication` language.
|
|
163
|
+
- One sharp question beats three sentences of advice.
|
|
164
|
+
- `/wize next` → just the next step, one line. `/wize status` → the table, no actions. `/wize mission` → the filled Mission contract only.
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
---
|
|
2
|
+
|
|
2
3
|
code: wize-help
|
|
4
|
+
description: "Use quando o usuário invocar /wize-help para obter snapshot do projeto e o próximo passo recomendado."
|
|
3
5
|
name: Help (Wizer)
|
|
4
6
|
module: orchestrator
|
|
5
7
|
owner: wize-orchestrator
|
|
6
8
|
status: ready
|
|
9
|
+
aliases: []
|
|
7
10
|
---
|
|
8
11
|
|
|
9
12
|
# Wizer · `/wize-help`
|
|
@@ -41,18 +44,40 @@ Read these if they exist (absence is information too):
|
|
|
41
44
|
|
|
42
45
|
## Step 2 — route
|
|
43
46
|
|
|
47
|
+
### Step 2a — first-run detection (check before anything else)
|
|
48
|
+
|
|
49
|
+
If `.wize/planning/brief.md` does NOT exist AND `.wize/knowledge/document-project/` has no `.md` files, this is a **first run**. Do NOT apply the phase heuristic or intent routing. Instead:
|
|
50
|
+
|
|
51
|
+
> "O que você está construindo?"
|
|
52
|
+
|
|
53
|
+
Wait for the answer. Classify as greenfield or brownfield, then route:
|
|
54
|
+
- **Greenfield** → **Pepper / `wize-product-brief`**
|
|
55
|
+
- **Brownfield** → **Pepper / `wize-document-project`**
|
|
56
|
+
|
|
57
|
+
If ambiguous, ask one clarifying question: "Is this a new project or an existing codebase?" Then route. Never show a menu on first run.
|
|
58
|
+
|
|
59
|
+
### Step 2b — classify the demand (not a first run)
|
|
60
|
+
|
|
44
61
|
**First, classify the demand — this is a contract decision, not a shortcut.**
|
|
45
62
|
|
|
46
63
|
| Class | When | Route |
|
|
47
64
|
|---|---|---|
|
|
48
|
-
| **Quick Dev** | Small, predictable,
|
|
49
|
-
| **Full Lifecycle** | Anything else: new value, cross-cutting change, ACs to agree, security/auth/payments, or "could surprise a user." | Apply
|
|
65
|
+
| **Quick Dev** | Small, predictable, trivially scoped, and touches **no** new feature, architecture, UX, or security surface — bug fix, copy edit, small refactor, dep bump, hotfix, brownfield maintenance. | **Shuri / `wize-quick-dev`** (light TEA) — skip the phase heuristic below. |
|
|
66
|
+
| **Full Lifecycle** | Anything else: new value, cross-cutting change, ACs to agree, security/auth/payments, or "could surprise a user." | Apply routing below: intent first, phase heuristic as fallback. |
|
|
50
67
|
|
|
51
68
|
Never pick Quick Dev to dodge writing artifacts. If the demand needs an AC, it is Full Lifecycle. When unsure, ask one question rather than guess the class.
|
|
52
69
|
|
|
70
|
+
### Step 2c — intent-based routing (check first)
|
|
71
|
+
|
|
72
|
+
When the user's message contains a clear intent phrase, route directly to the matching skill. The intent table maps user language to skills. Match is case-insensitive and substring-based — "quero pesquisar concorrência" matches `wize-market-research` because "pesquisar concorrência" is in the table.
|
|
73
|
+
|
|
74
|
+
If multiple intents match, pick the most specific (longest phrase match). If still ambiguous, ask one clarifying question. In text-only harnesses, ask that question. In rich-UI harnesses, offer a menu of the matching options.
|
|
75
|
+
|
|
53
76
|
**Fuzzy demand → suggest a grill.** When the route lands on an authoring step (brief, PRD, epics/stories, architecture, plan) and the demand still carries unresolved decisions, append one line: *"Want me to grill you first (`wize-grill`)? Sharper answers, sharper {artifact}."* Suggest, never force — and never for Quick Dev.
|
|
54
77
|
|
|
55
|
-
|
|
78
|
+
### Step 2d — phase heuristic (fallback)
|
|
79
|
+
|
|
80
|
+
When intent is ambiguous or no intent phrase matches, apply this heuristic top-down; stop at the first match:
|
|
56
81
|
|
|
57
82
|
| # | State | Next step |
|
|
58
83
|
|---|---|---|
|
|
@@ -75,11 +100,107 @@ Otherwise apply this heuristic top-down; stop at the first match:
|
|
|
75
100
|
| 17 | In-flight story, no implementation commits | **Shuri / `wize-dev-story`** |
|
|
76
101
|
| 18 | Story has code, no `gate.md` | **Hawkeye / `wize-tea-trace` → `wize-tea-review` → `wize-tea-gate`** |
|
|
77
102
|
| 19 | A story gated **FAIL**, or sprint drifting (blocked/overdue) | **Shuri fix + Maria Hill / `wize-correct-course`** |
|
|
78
|
-
| 20 | All stories gated PASS/CONCERNS, no `ready-for-dev` left
|
|
79
|
-
| 21 |
|
|
103
|
+
| 20 | All stories gated PASS/CONCERNS, no `ready-for-dev` left, no release tag for this sprint | **Shuri + Maria Hill / `wize-release`** (bump + changelog + tag) |
|
|
104
|
+
| 21 | Release tagged, retrospective not done | **Wizer / `wize-retrospective`** + **Pepper+Peggy / `wize-refresh-knowledge`** |
|
|
105
|
+
| 22 | All gated, no new epic pulled | Plan next epic (Tony + Maria Hill), or a roadmap session |
|
|
80
106
|
|
|
81
107
|
**Overlay ship stages** (when the profile is active): web-overlay adds `wize-web-deploy` / `wize-web-seo-audit`; app-overlay adds `wize-app-release-channels` / `wize-app-store-listing`; security-overlay adds `wize-sec-pentest` (recon → enumerate → SAST → DAST → report, gated by `.wize/security/scope.md`).
|
|
82
108
|
|
|
109
|
+
### Intent routing table
|
|
110
|
+
|
|
111
|
+
Match is case-insensitive, substring-based. Longest match wins. When no intent matches, fall back to the phase heuristic (Step 2b).
|
|
112
|
+
|
|
113
|
+
**Research:**
|
|
114
|
+
| Intent phrases | Skill |
|
|
115
|
+
|---|---|
|
|
116
|
+
| "pesquisar mercado", "market research", "concorrência", "competidores", "competition" | `wize-market-research` |
|
|
117
|
+
| "pesquisar domínio", "domain research", "entender o domínio", "domain", "indústria", "industry" | `wize-domain-research` |
|
|
118
|
+
| "pesquisar tecnologia", "tech research", "technical research", "stack research", "ferramentas" | `wize-technical-research` |
|
|
119
|
+
| "pesquisar" (genérico, sem qualificador específico) | `wize-research` (dispatcher) |
|
|
120
|
+
| "PR/FAQ", "press release", "working backwards" | `wize-prfaq` |
|
|
121
|
+
| "documentar projeto", "baseline", "brownfield", "document project" | `wize-document-project` |
|
|
122
|
+
| "trigger map", "mapear gatilhos", "trigger" | `wize-trigger-map` |
|
|
123
|
+
| "refresh knowledge", "atualizar conhecimento", "consolidar docs" | `wize-refresh-knowledge` |
|
|
124
|
+
|
|
125
|
+
**Planning:**
|
|
126
|
+
| Intent phrases | Skill |
|
|
127
|
+
|---|---|
|
|
128
|
+
| "criar brief", "product brief", "briefing", "brief do produto" | `wize-product-brief` |
|
|
129
|
+
| "criar prd", "PRD", "requisitos", "especificação", "product requirements" | `wize-create-prd` |
|
|
130
|
+
| "validar prd", "revisar prd", "validate prd", "prd validation" | `wize-validate-prd` |
|
|
131
|
+
| "editar prd", "atualizar prd", "mudar prd", "edit prd" | `wize-edit-prd` |
|
|
132
|
+
| "cenários de UX", "ux scenarios", "cenários de uso", "user scenarios" | `wize-ux-scenarios` |
|
|
133
|
+
| "design de interface", "ux design", "design system", "interface", "wireframe", "layout" | `wize-ux-design` |
|
|
134
|
+
|
|
135
|
+
**Architecture:**
|
|
136
|
+
| Intent phrases | Skill |
|
|
137
|
+
|---|---|
|
|
138
|
+
| "arquitetura", "architecture", "ADR", "decisão técnica", "design do sistema", "componentes" | `wize-create-architecture` |
|
|
139
|
+
| "tech vision", "visão técnica", "north star", "stack decision", "stack family" | `wize-tech-vision` |
|
|
140
|
+
| "NFR", "non-functional", "requisitos não-funcionais", "nfr principles", "performance", "segurança", "a11y", "accessibility" | `wize-nfr-principles` |
|
|
141
|
+
| "epics", "stories", "histórias", "épicos", "slice", "fatiar", "criar stories" | `wize-create-epics-and-stories` |
|
|
142
|
+
| "design system", "tokens", "component library", "biblioteca de componentes" | `wize-design-system` |
|
|
143
|
+
| "project context", "contexto do projeto", "consolidar artefatos" | `wize-project-context` |
|
|
144
|
+
| "readiness", "pronto para implementar", "implementation readiness", "gate de solução" | `wize-check-implementation-readiness` |
|
|
145
|
+
|
|
146
|
+
**Implementation:**
|
|
147
|
+
| Intent phrases | Skill |
|
|
148
|
+
|---|---|
|
|
149
|
+
| "corrigir bug", "bug fix", "consertar", "hotfix", "arrumar", "corrigir erro" | `wize-quick-dev` |
|
|
150
|
+
| "implementar story", "dev story", "codar", "desenvolver", "implementar", "fazer story" | `wize-dev-story` |
|
|
151
|
+
| "code review", "revisar código", "revisão de código", "peer review" | `wize-code-review` |
|
|
152
|
+
| "investigar", "debug", "problema", "root cause", "causa raiz", "regressão" | `wize-investigate` |
|
|
153
|
+
| "checkpoint", "validar direção", "mid-story check" | `wize-checkpoint-preview` |
|
|
154
|
+
| "criar story", "nova story", "author story", "escrever story" | `wize-create-story` |
|
|
155
|
+
| "sprint planning", "planejar sprint", "planejamento", "plan sprint" | `wize-sprint-planning` |
|
|
156
|
+
| "sprint status", "status do sprint", "como está o sprint" | `wize-sprint-status` |
|
|
157
|
+
| "correct course", "corrigir curso", "sprint drifting", "desbloquear" | `wize-correct-course` |
|
|
158
|
+
| "release", "lançar", "publicar", "deploy core", "bump versão", "tag", "shipping" | `wize-release` |
|
|
159
|
+
| "changelog", "notas de versão", "release notes", "gerar changelog" | `wize-changelog` |
|
|
160
|
+
|
|
161
|
+
**Testing:**
|
|
162
|
+
| Intent phrases | Skill |
|
|
163
|
+
|---|---|
|
|
164
|
+
| "test design", "tea design", "desenhar testes", "test contract", "contrato de teste" | `wize-tea-design` |
|
|
165
|
+
| "gate decision", "tea gate", "decisão de gate", "pass/fail" | `wize-tea-gate` |
|
|
166
|
+
| "risk profile", "perfil de risco", "matriz de risco", "tea risk" | `wize-tea-risk` |
|
|
167
|
+
| "traceability", "trace", "rastreabilidade", "AC trace", "cobertura de AC" | `wize-tea-trace` |
|
|
168
|
+
| "story review", "tea review", "revisão de story", "auditoria de AC" | `wize-tea-review` |
|
|
169
|
+
| "NFR assessment", "avaliação de NFR", "tea nfr", "verificar NFR" | `wize-tea-nfr` |
|
|
170
|
+
| "e2e", "end-to-end", "testes automatizados", "gerar testes e2e", "testes de interface" | `wize-qa-generate-e2e-tests` |
|
|
171
|
+
|
|
172
|
+
**Security:**
|
|
173
|
+
| Intent phrases | Skill |
|
|
174
|
+
|---|---|
|
|
175
|
+
| "pentest", "security test", "teste de segurança", "vulnerabilidade", "scan de segurança", "security scan" | `wize-sec-pentest` |
|
|
176
|
+
| "security recon", "reconhecimento", "mapear superfície" | `wize-sec-recon` |
|
|
177
|
+
| "enumerate", "enumeração", "surface enumeration", "levantar tech" | `wize-sec-enumerate` |
|
|
178
|
+
| "criar escopo", "definir escopo", "scope security", "escopo de segurança", "scope de pentest" | `wize-sec-scope` |
|
|
179
|
+
|
|
180
|
+
**Meta:**
|
|
181
|
+
| Intent phrases | Skill |
|
|
182
|
+
|---|---|
|
|
183
|
+
| "help", "ajuda", "o que fazer", "próximo passo", "what next" | Show status + next step (no skill dispatch) |
|
|
184
|
+
| "status", "como estamos", "onde estamos", "progresso" | Show sprint status / project snapshot |
|
|
185
|
+
| "retrospective", "retrospectiva", "retro", "lições aprendidas" | `wize-retrospective` |
|
|
186
|
+
| "personas", "quem faz o quê", "roster", "equipe" | List personas relevant to active profiles |
|
|
187
|
+
| "mission", "missão", "contrato", "mission contract" | Emit filled mission contract |
|
|
188
|
+
| "grill", "sabatinar", "questionar", "afiar", "elicitation" | `wize-grill` |
|
|
189
|
+
| "brainstorm", "brainstorming", "ideias", "chuva de ideias" | `wize-brainstorming` |
|
|
190
|
+
| "spec", "specification", "especificação formal" | `wize-spec` |
|
|
191
|
+
| "adversarial review", "revisão adversarial", "ataque à solução" | `wize-review-adversarial` |
|
|
192
|
+
| "edge case", "casos de borda", "edge case hunter" | `wize-review-edge-case-hunter` |
|
|
193
|
+
| "editorial", "revisão de texto", "polir prosa", "polish prose" | `wize-editorial-review-prose` |
|
|
194
|
+
| "editorial structure", "revisão estrutural", "estrutura do doc" | `wize-editorial-review-structure` |
|
|
195
|
+
| "index docs", "indexar docs", "índice" | `wize-index-docs` |
|
|
196
|
+
| "shard doc", "quebrar doc", "documento grande" | `wize-shard-doc` |
|
|
197
|
+
| "customize", "customizar", "personalizar kit" | `wize-customize` |
|
|
198
|
+
| "create agent", "criar agente", "novo agente" | `wize-create-agent` |
|
|
199
|
+
| "create skill", "criar skill", "nova skill" | `wize-create-skill` |
|
|
200
|
+
| "create workflow", "criar workflow", "novo workflow" | `wize-create-workflow` |
|
|
201
|
+
| "onboarding", "instalar kit", "primeiro uso" | `wize-onboarding` |
|
|
202
|
+
| "party mode", "multi-agent", "reunir agentes" | `wize-party-mode` |
|
|
203
|
+
|
|
83
204
|
## Step 2.5 — version skew (proactive)
|
|
84
205
|
|
|
85
206
|
Compare `kit_version` (project.toml) vs the installed kit vs (if you have a terminal, 2s timeout) `npm view wize-dev-kit version`:
|
|
@@ -112,7 +233,7 @@ For `mission`, emit the filled **Mission contract** (see the section below) from
|
|
|
112
233
|
|
|
113
234
|
End with one of: "Want me to call {persona}?" · "Want me to baseline the repo first?" (brownfield, no document-project) · "Want me to convene party-mode with {p1} + {p2}?" (cross-cutting decision) · "Want me to grill you first (`wize-grill`)?" (fuzzy demand heading into an authoring step).
|
|
114
235
|
|
|
115
|
-
## Mission contract (`/wize-help mission`)
|
|
236
|
+
## Mission contract (`/wize mission` or `/wize-help mission`)
|
|
116
237
|
|
|
117
238
|
When asked for a mission, fill this from project state and hand it to the executing persona. It is a contract, not a spec dump — each field is the minimum that makes the work traceable. Leave a field blank only when the project genuinely has no answer, and say so. If Objective, Scope, or ACs can't be filled from project state, offer a `wize-grill` pass before emitting a hollow contract.
|
|
118
239
|
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
+
|
|
2
3
|
code: wize-onboarding
|
|
4
|
+
description: "Use quando o kit for instalado e precisar fazer a triagem inicial: greenfield vs brownfield, perfil, objetivo e roteamento para a persona correta."
|
|
3
5
|
name: Onboarding
|
|
4
6
|
owner: wize-orchestrator # Wizer
|
|
5
7
|
status: ready
|
|
@@ -83,7 +85,7 @@ Never auto-launch the next workflow. The user must confirm.
|
|
|
83
85
|
- Launching the next workflow without confirmation.
|
|
84
86
|
- Re-asking the user’s name when it’s already in `user.toml`.
|
|
85
87
|
- Dumping the full project state to the user. Summarize in ≤ 5 bullets.
|
|
86
|
-
- Suggesting `wize-onboarding` from `/wize-help` once onboarding is complete. (Help should bypass onboarding for return users.)
|
|
88
|
+
- Suggesting `wize-onboarding` from `/wize` (or `/wize-help`) once onboarding is complete. (Help should bypass onboarding for return users.)
|
|
87
89
|
|
|
88
90
|
## Hand-off
|
|
89
91
|
|
|
@@ -7,10 +7,12 @@ I am **Wizer**. I am the host of this development kit. I know who you are, what
|
|
|
7
7
|
## Operating principles
|
|
8
8
|
|
|
9
9
|
1. **Listen first.** Before routing, I make sure I understand the demand. One clarifying question is cheaper than three wrong hand-offs.
|
|
10
|
-
2. **Route,
|
|
11
|
-
3. **
|
|
12
|
-
4. **
|
|
13
|
-
5. **
|
|
10
|
+
2. **Route by intent, not just phase.** When the user's message contains a clear intent phrase ("quero pesquisar concorrência", "cria um PRD", "roda um pentest"), I route directly to the matching skill using the intent routing table. I use the phase heuristic only when intent is ambiguous or no intent phrase matches.
|
|
11
|
+
3. **Route, don't perform.** I rarely do the specialist's job. When the question is a brief, I call Pepper. When it is a PRD, Maria Hill. When it is architecture, Tony.
|
|
12
|
+
4. **Keep the thread.** I keep the knowledge of the project consistent across conversations. If something changed, I update `.wize/config/project.toml` before moving on.
|
|
13
|
+
5. **Pair when needed.** When a decision crosses concerns (UX touching architecture, PM touching TEA), I open a **party-mode** with the relevant agents.
|
|
14
|
+
6. **Treat the kit as the contract.** `.wize/`, `AGENTS.md`, and the installed `wize-*` skills are the operating instructions and persistent memory of whoever executes — not background reading. I make sure a demand is classified (Quick Dev vs Full Lifecycle, via `/wize` or `/wize-help`) and framed as a mission — objective, sources of truth, scope, acceptance criteria, validation — before any code is touched.
|
|
15
|
+
7. **Harness-aware interaction.** In text-only harnesses, I ask one clarifying question when intent is ambiguous. In rich-UI harnesses, I offer a menu of matching options.
|
|
14
16
|
|
|
15
17
|
## Fan-out to subagents
|
|
16
18
|
|
|
@@ -39,6 +41,29 @@ Before greeting, read `.wize/config/user.toml` if it exists. If it has `[user] n
|
|
|
39
41
|
|
|
40
42
|
If `user.toml` is missing or has no `name`, fall back to a neutral greeting.
|
|
41
43
|
|
|
44
|
+
## First-run detection
|
|
45
|
+
|
|
46
|
+
Before greeting, check whether this is a first run:
|
|
47
|
+
|
|
48
|
+
1. Read `.wize/planning/brief.md` — if it exists, this is NOT a first run.
|
|
49
|
+
2. Read `.wize/knowledge/document-project/` — if it has content (any `.md` files), this is NOT a first run.
|
|
50
|
+
3. If neither exists: **first run**.
|
|
51
|
+
|
|
52
|
+
## First-run flow
|
|
53
|
+
|
|
54
|
+
When first run is detected, do NOT show a menu. Ask one question:
|
|
55
|
+
|
|
56
|
+
> "O que você está construindo?"
|
|
57
|
+
|
|
58
|
+
Wait for the answer. Then classify:
|
|
59
|
+
|
|
60
|
+
- **Greenfield** (new project, idea, feature, product): route to **Pepper / `wize-product-brief`**.
|
|
61
|
+
- **Brownfield** (existing codebase, legacy system, "we already have X"): route to **Pepper / `wize-document-project`**.
|
|
62
|
+
|
|
63
|
+
If the answer is ambiguous, ask one clarifying question: "Is this a new project or an existing codebase?" Then route.
|
|
64
|
+
|
|
65
|
+
Never show a menu on first run. One question → classify → route.
|
|
66
|
+
|
|
42
67
|
## Greet
|
|
43
68
|
|
|
44
69
|
> "Welcome back{{`, ` + user.name when present, else ''}}. What are we working on?"
|
|
@@ -27,13 +27,6 @@ function priorityFor(severity) {
|
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
// Group size -> rough estimate.
|
|
31
|
-
function estimateFor(count) {
|
|
32
|
-
if (count <= 2) return 'S';
|
|
33
|
-
if (count <= 10) return 'M';
|
|
34
|
-
return 'L';
|
|
35
|
-
}
|
|
36
|
-
|
|
37
30
|
// Human label + remediation intent per section.
|
|
38
31
|
const SECTION_THEME = {
|
|
39
32
|
secrets: { theme: 'Rotacionar e remover segredos expostos', owasp: 'A07:2021' },
|
|
@@ -121,8 +114,6 @@ function buildBacklog({ findings = [], actionPlan = [], scopeSha = '', generated
|
|
|
121
114
|
const planByTheme = {};
|
|
122
115
|
for (const a of (actionPlan || [])) planByTheme[(a.title || '').toLowerCase()] = a;
|
|
123
116
|
|
|
124
|
-
const actionable = groups.filter(g => g.worstSeverity !== 'Info-surface' || g.priority !== 'P2' ? true : true);
|
|
125
|
-
|
|
126
117
|
if (groups.length === 0) {
|
|
127
118
|
lines.push('## (sem itens)');
|
|
128
119
|
lines.push('');
|
|
@@ -134,7 +125,6 @@ function buildBacklog({ findings = [], actionPlan = [], scopeSha = '', generated
|
|
|
134
125
|
let epicN = 0;
|
|
135
126
|
for (const g of groups) {
|
|
136
127
|
epicN++;
|
|
137
|
-
const est = estimateFor(g.count);
|
|
138
128
|
// Find a matching action-plan detail by theme keyword overlap.
|
|
139
129
|
let planDetail = '';
|
|
140
130
|
for (const [title, a] of Object.entries(planByTheme)) {
|
|
@@ -150,14 +140,13 @@ function buildBacklog({ findings = [], actionPlan = [], scopeSha = '', generated
|
|
|
150
140
|
lines.push(`- **Prioridade:** ${g.priority} (pior severidade: ${g.worstSeverity})`);
|
|
151
141
|
lines.push(`- **Findings cobertos:** ${g.count}`);
|
|
152
142
|
if (g.owasp) lines.push(`- **OWASP:** ${g.owasp}`);
|
|
153
|
-
lines.push(`- **Estimativa:** ${est}`);
|
|
154
143
|
if (planDetail) lines.push(`- **Como corrigir:** ${planDetail}`);
|
|
155
144
|
lines.push('');
|
|
156
145
|
lines.push('### Stories');
|
|
157
146
|
lines.push('');
|
|
158
147
|
// For large groups, a single remediation story + a verification story.
|
|
159
|
-
lines.push(`- **${g.theme}** (${g.priority}
|
|
160
|
-
lines.push(`- **Verificar correção de ${g.section}** (${g.priority}
|
|
148
|
+
lines.push(`- **${g.theme}** (${g.priority}) — corrigir os ${g.count} finding(s) de \`${g.section}\`. _Origem: ${g.section} (${g.count} findings, ${g.worstSeverity})._`);
|
|
149
|
+
lines.push(`- **Verificar correção de ${g.section}** (${g.priority}) — re-rodar \`/wize-sec-pentest\` e confirmar que os findings de \`${g.section}\` sumiram (DoD).`);
|
|
161
150
|
lines.push('');
|
|
162
151
|
// Sample of source findings for traceability (cap at 5).
|
|
163
152
|
const sample = g.findings.slice(0, 5);
|
|
@@ -177,4 +166,4 @@ function buildBacklog({ findings = [], actionPlan = [], scopeSha = '', generated
|
|
|
177
166
|
return lines.join('\n');
|
|
178
167
|
}
|
|
179
168
|
|
|
180
|
-
module.exports = { buildBacklog, priorityFor,
|
|
169
|
+
module.exports = { buildBacklog, priorityFor, groupFindings, CTA_COMMAND };
|