@brunosps00/dev-workflow 0.5.0 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -3
- package/lib/constants.js +2 -0
- package/lib/install-deps.js +39 -1
- package/package.json +1 -1
- package/scaffold/en/commands/dw-brainstorm.md +50 -15
- package/scaffold/en/commands/dw-code-review.md +10 -0
- package/scaffold/en/commands/dw-create-prd.md +10 -1
- package/scaffold/en/commands/dw-generate-pr.md +4 -1
- package/scaffold/en/commands/dw-help.md +3 -0
- package/scaffold/en/commands/dw-quick.md +9 -7
- package/scaffold/en/commands/dw-review-implementation.md +11 -0
- package/scaffold/en/commands/dw-security-check.md +271 -0
- package/scaffold/en/templates/brainstorm-matrix.md +12 -4
- package/scaffold/en/templates/idea-onepager.md +90 -0
- package/scaffold/pt-br/commands/dw-brainstorm.md +54 -19
- package/scaffold/pt-br/commands/dw-code-review.md +10 -0
- package/scaffold/pt-br/commands/dw-create-prd.md +10 -1
- package/scaffold/pt-br/commands/dw-generate-pr.md +4 -1
- package/scaffold/pt-br/commands/dw-help.md +3 -0
- package/scaffold/pt-br/commands/dw-quick.md +9 -7
- package/scaffold/pt-br/commands/dw-review-implementation.md +11 -0
- package/scaffold/pt-br/commands/dw-security-check.md +271 -0
- package/scaffold/pt-br/templates/brainstorm-matrix.md +12 -4
- package/scaffold/pt-br/templates/idea-onepager.md +90 -0
- package/scaffold/skills/security-review/languages/csharp.md +507 -0
- package/scaffold/skills/security-review/languages/rust.md +584 -0
- package/scaffold/skills/security-review/languages/typescript.md +373 -0
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
<system_instructions>
|
|
2
|
+
You are a rigorous security auditor. Your job is to perform a **multi-layer security check** on a dev-workflow project — static OWASP review (language-aware for TypeScript, Python, and C#), Trivy dependency/secret/IaC scanning, and native lockfile audit — and emit a blocking verdict with no bypass.
|
|
3
|
+
|
|
4
|
+
<critical>This command is rigid. CRITICAL or HIGH findings produce REJECTED status. There is NO `--skip`, `--ignore`, or allowlist flag. Findings are fixed or the verdict stands.</critical>
|
|
5
|
+
<critical>Supported languages in this release: TypeScript/JavaScript, Python, C#, Rust. If none is detected in scope, abort with a clear message.</critical>
|
|
6
|
+
|
|
7
|
+
## When to Use
|
|
8
|
+
- Before `/dw-code-review` as the security layer for any TS/Python/C#/Rust project
|
|
9
|
+
- Before `/dw-generate-pr` to ensure no HIGH/CRITICAL vulnerabilities ship
|
|
10
|
+
- Automatically invoked by `/dw-review-implementation` when the diff touches code in a supported language
|
|
11
|
+
- Manually when auditing dependencies after adding a new package
|
|
12
|
+
- NOT for auto-fix (this command detects; remediation is manual or via `/dw-fix-qa`)
|
|
13
|
+
- NOT for DAST — this is SAST + SCA + IaC scanning (`/dw-run-qa` covers runtime)
|
|
14
|
+
|
|
15
|
+
## Pipeline Position
|
|
16
|
+
**Predecessor:** `/dw-run-plan` or `/dw-run-task` (code committed) | **Successor:** `/dw-code-review` (which hard-gates on this command's output for supported languages)
|
|
17
|
+
|
|
18
|
+
## Complementary Skills
|
|
19
|
+
|
|
20
|
+
| Skill | Trigger |
|
|
21
|
+
|-------|---------|
|
|
22
|
+
| `security-review` | **ALWAYS** — primary OWASP knowledge base; language-specific rules live in `languages/{typescript,python,csharp}.md`, cross-cutting topics in `references/*.md` |
|
|
23
|
+
| `dw-review-rigor` | **ALWAYS** — applies de-duplication (same pattern in N files = 1 finding), severity ordering, verify-intent-before-flag, skip-what-linter-catches, and signal-over-volume |
|
|
24
|
+
| `dw-verify` | **ALWAYS** — a VERIFICATION REPORT (Trivy command + exit code + summary) must be present before any status is emitted |
|
|
25
|
+
|
|
26
|
+
## Input Variables
|
|
27
|
+
|
|
28
|
+
| Variable | Description | Example |
|
|
29
|
+
|----------|-------------|---------|
|
|
30
|
+
| `{{SCOPE}}` | PRD path OR source path. Optional — defaults to `.dw/spec/prd-<slug>` inferred from `feat/prd-<slug>` git branch | `.dw/spec/prd-checkout-v2` or `src/` |
|
|
31
|
+
|
|
32
|
+
If `{{SCOPE}}` is not provided and no PRD is active, abort and ask the user to specify.
|
|
33
|
+
|
|
34
|
+
## File Locations
|
|
35
|
+
|
|
36
|
+
- Report (PRD scope): `{{SCOPE}}/security-check.md`
|
|
37
|
+
- Report (non-PRD scope): stdout
|
|
38
|
+
- Language reference files: `.agents/skills/security-review/languages/{typescript,javascript,python,csharp,rust}.md`
|
|
39
|
+
- Cross-cutting OWASP refs: `.agents/skills/security-review/references/*.md`
|
|
40
|
+
|
|
41
|
+
## Required Behavior — Pipeline (execute in order, no bypass)
|
|
42
|
+
|
|
43
|
+
### 0. Detect Languages in Scope
|
|
44
|
+
|
|
45
|
+
Enumerate files in scope and detect languages:
|
|
46
|
+
|
|
47
|
+
| Language | Indicators |
|
|
48
|
+
|----------|------------|
|
|
49
|
+
| TypeScript / JavaScript | `tsconfig.json`, `package.json`, `*.ts`, `*.tsx`, `*.js`, `*.jsx`, `*.mjs` |
|
|
50
|
+
| Python | `pyproject.toml`, `requirements*.txt`, `Pipfile`, `poetry.lock`, `setup.py`, `*.py` |
|
|
51
|
+
| C# / .NET | `*.csproj`, `*.sln`, `packages.config`, `Directory.Build.props`, `*.cs`, `*.cshtml`, `*.razor` |
|
|
52
|
+
| Rust | `Cargo.toml`, `Cargo.lock`, `*.rs`, `rust-toolchain.toml` |
|
|
53
|
+
|
|
54
|
+
- If **none** of the four is detected → **abort** with:
|
|
55
|
+
`"dw-security-check currently supports TypeScript, Python, C#, and Rust. No files in supported languages were detected in <scope>. Aborting."`
|
|
56
|
+
- If **one or more** are detected → proceed; polyglot repos run every applicable language layer and the report has a section per language.
|
|
57
|
+
|
|
58
|
+
Record the detected language(s) — they drive which `languages/*.md` file(s) the static review consults and which native audit command runs.
|
|
59
|
+
|
|
60
|
+
### 1. Static Code Review (Language-Aware)
|
|
61
|
+
|
|
62
|
+
For each detected language, invoke the `security-review` skill using the corresponding reference file(s) as the primary guide:
|
|
63
|
+
|
|
64
|
+
- **TS/JS** → `languages/typescript.md` + `languages/javascript.md`
|
|
65
|
+
- **Python** → `languages/python.md`
|
|
66
|
+
- **C#** → `languages/csharp.md`
|
|
67
|
+
- **Rust** → `languages/rust.md`
|
|
68
|
+
- **Cross-cutting** (all languages) → `references/{injection,xss,csrf,ssrf,cryptography,authentication,authorization,deserialization,supply-chain,secrets,file-security,api-security}.md` as applicable
|
|
69
|
+
|
|
70
|
+
Apply the `dw-review-rigor` five rules:
|
|
71
|
+
1. De-duplicate: same pattern in N files → 1 finding with affected file list
|
|
72
|
+
2. Severity ordering: CRITICAL → HIGH → MEDIUM → LOW
|
|
73
|
+
3. Verify intent before flagging: adjacent comments, ADRs, tests, `.dw/rules/`
|
|
74
|
+
4. Skip what the linter catches
|
|
75
|
+
5. Signal over volume: keep all CRITICAL/HIGH; prune MEDIUM/LOW to the most impactful
|
|
76
|
+
|
|
77
|
+
### 1.5. Context7 MCP — Framework Best Practices (MANDATORY when framework detected)
|
|
78
|
+
|
|
79
|
+
<critical>When the scope has a detectable framework, you MUST consult Context7 MCP for current best practices before applying framework-specific checks. Offline knowledge may be outdated.</critical>
|
|
80
|
+
|
|
81
|
+
Framework detection and query:
|
|
82
|
+
|
|
83
|
+
| Language | Framework detection source | Example Context7 queries |
|
|
84
|
+
|----------|----------------------------|--------------------------|
|
|
85
|
+
| TS/JS | `package.json` deps | `"next.js 14 security best practices app router"`, `"nestjs 10 authentication guards"`, `"remix v2 csrf"` |
|
|
86
|
+
| Python | `pyproject.toml` / `requirements.txt` | `"django 5 security checklist"`, `"fastapi pydantic validation"`, `"flask-login secure cookies"` |
|
|
87
|
+
| C# | `*.csproj` `PackageReference` | `"asp.net core 8 jwt bearer"`, `"blazor server antiforgery"`, `"minimal apis authorization"` |
|
|
88
|
+
| Rust | `Cargo.toml` `[dependencies]` | `"actix-web 4 security middleware"`, `"axum 0.7 extractor auth"`, `"rocket 0.5 forms csrf"`, `"sqlx query macros"` |
|
|
89
|
+
|
|
90
|
+
For each detected framework+version:
|
|
91
|
+
1. Build the query with framework name + detected major/minor version + the topic (auth, CSP, cookies, server actions, etc.)
|
|
92
|
+
2. Invoke Context7 MCP
|
|
93
|
+
3. Incorporate the returned guidance as live context when reviewing framework-specific code
|
|
94
|
+
4. If a Context7 result contradicts offline knowledge in `languages/*.md`, **Context7 wins** — cite the source in the finding
|
|
95
|
+
|
|
96
|
+
If Context7 MCP is unavailable in the environment:
|
|
97
|
+
- Degrade to offline knowledge only
|
|
98
|
+
- **Add a visible warning** in the report: `⚠️ Context7 MCP unavailable — framework-version-specific checks used offline knowledge; best practices for <framework@version> may be stale.`
|
|
99
|
+
|
|
100
|
+
### 2. Dependency + Secret + IaC Scan (Trivy)
|
|
101
|
+
|
|
102
|
+
<critical>Trivy must be installed. If missing, abort with: `"Trivy not found. Install via 'brew install trivy' (macOS) or equivalent; see 'npx @brunosps00/dev-workflow install-deps' instructions."`</critical>
|
|
103
|
+
|
|
104
|
+
Run:
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
trivy fs --scanners vuln,secret,misconfig --severity HIGH,CRITICAL --exit-code 1 --format json --output /tmp/dw-trivy-fs.json <scope-path>
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Parse the JSON output. The scan covers:
|
|
111
|
+
- **Vulnerabilities** in manifests: `package.json`/`package-lock.json`/`pnpm-lock.yaml`/`yarn.lock` (TS/JS), `requirements*.txt`/`Pipfile.lock`/`poetry.lock` (Python), `*.csproj`/`packages.lock.json` (C# / NuGet)
|
|
112
|
+
- **Secrets**: API keys, tokens, private keys accidentally committed
|
|
113
|
+
- **Misconfig**: surface-level — subsumed by step 3 for IaC
|
|
114
|
+
|
|
115
|
+
Capture the exact command and exit code; include both in the VERIFICATION REPORT (step 5).
|
|
116
|
+
|
|
117
|
+
### 3. IaC Config Scan (Trivy)
|
|
118
|
+
|
|
119
|
+
Run:
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
trivy config --severity HIGH,CRITICAL --format json --output /tmp/dw-trivy-config.json <scope-path>
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
Covers Dockerfile, Kubernetes manifests, Terraform, CloudFormation, GitHub Actions workflows, Helm charts, AWS CDK.
|
|
126
|
+
|
|
127
|
+
### 4. Native Lockfile Audit (language-specific, second signal)
|
|
128
|
+
|
|
129
|
+
For each detected language, run the native audit tool (if available). Treat its output as a second signal — Trivy is primary; this catches gaps.
|
|
130
|
+
|
|
131
|
+
| Language | Primary command | Fallback |
|
|
132
|
+
|----------|-----------------|----------|
|
|
133
|
+
| TS/JS (npm) | `npm audit --production --audit-level=high --json` | `npm audit --production` (human) |
|
|
134
|
+
| TS/JS (pnpm) | `pnpm audit --prod --audit-level high --json` | — |
|
|
135
|
+
| TS/JS (yarn) | `yarn npm audit --severity high --recursive --json` | — |
|
|
136
|
+
| Python | `pip-audit --strict --format json` | skip with note if `pip-audit` missing |
|
|
137
|
+
| C# | `dotnet list package --vulnerable --include-transitive` | — |
|
|
138
|
+
| Rust | `cargo audit --json` | skip with note if `cargo-audit` not installed (install via `cargo install cargo-audit`); optionally `cargo deny check advisories` |
|
|
139
|
+
|
|
140
|
+
If the tool returns exit ≠ 0 or reports HIGH/CRITICAL, escalate to REJECTED (same policy as Trivy).
|
|
141
|
+
|
|
142
|
+
### 5. VERIFICATION REPORT (dw-verify)
|
|
143
|
+
|
|
144
|
+
Before emitting a status, produce a VERIFICATION REPORT per `dw-verify` skill. Required shape:
|
|
145
|
+
|
|
146
|
+
```
|
|
147
|
+
VERIFICATION REPORT
|
|
148
|
+
-------------------
|
|
149
|
+
Claim: Security check complete for <scope> (languages: <list>)
|
|
150
|
+
Commands:
|
|
151
|
+
- trivy fs ... --exit-code 1 → exit <N>, findings: C=<x> H=<y>
|
|
152
|
+
- trivy config ... → exit <N>, findings: C=<x> H=<y>
|
|
153
|
+
- <native audit> → exit <N>, findings: ...
|
|
154
|
+
Executed: just now, after all changes
|
|
155
|
+
Static review: <X> findings (C=<a> H=<b> M=<c> L=<d>)
|
|
156
|
+
Framework context: Context7 MCP [consulted | unavailable]
|
|
157
|
+
Verdict: <CLEAN | PASSED WITH OBSERVATIONS | REJECTED>
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### 6. Emit Status (rigid gates)
|
|
161
|
+
|
|
162
|
+
| Condition | Status |
|
|
163
|
+
|-----------|--------|
|
|
164
|
+
| Any CRITICAL finding (static OR Trivy OR native audit) | **REJECTED** |
|
|
165
|
+
| Any HIGH finding | **REJECTED** |
|
|
166
|
+
| Only MEDIUM / LOW findings | **PASSED WITH OBSERVATIONS** |
|
|
167
|
+
| Zero findings | **CLEAN** |
|
|
168
|
+
|
|
169
|
+
<critical>No finding is "accepted as caveat" at HIGH or above. The user may choose to fix and re-run, or raise the issue as an ADR documenting why the risk is accepted — but this command's verdict does not change.</critical>
|
|
170
|
+
|
|
171
|
+
## Report Format
|
|
172
|
+
|
|
173
|
+
Save to `{{SCOPE}}/security-check.md` (when PRD scope) with frontmatter:
|
|
174
|
+
|
|
175
|
+
```markdown
|
|
176
|
+
---
|
|
177
|
+
type: security-check
|
|
178
|
+
schema_version: "1.0"
|
|
179
|
+
status: <CLEAN | PASSED WITH OBSERVATIONS | REJECTED>
|
|
180
|
+
date: YYYY-MM-DD
|
|
181
|
+
languages: [typescript, python, csharp, rust]
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
# Security Check — <feature name>
|
|
185
|
+
|
|
186
|
+
## Status: <STATUS>
|
|
187
|
+
|
|
188
|
+
<short summary>
|
|
189
|
+
|
|
190
|
+
## VERIFICATION REPORT
|
|
191
|
+
<the block from step 5>
|
|
192
|
+
|
|
193
|
+
## Findings
|
|
194
|
+
|
|
195
|
+
### Critical (<count>)
|
|
196
|
+
- **[CRITICAL]** `path/to/file.ts:42` — <title ≤72 chars>
|
|
197
|
+
<description>
|
|
198
|
+
<remediation>
|
|
199
|
+
Also affects: <other paths if de-duplicated>
|
|
200
|
+
Evidence: <snippet or CVE id>
|
|
201
|
+
|
|
202
|
+
### High (<count>)
|
|
203
|
+
...
|
|
204
|
+
|
|
205
|
+
### Medium (<count>)
|
|
206
|
+
...
|
|
207
|
+
|
|
208
|
+
### Low (<count>)
|
|
209
|
+
...
|
|
210
|
+
|
|
211
|
+
## Dependency Vulnerabilities (Trivy)
|
|
212
|
+
|
|
213
|
+
| CVE | Package | Installed | Fixed in | Severity | Path |
|
|
214
|
+
|-----|---------|-----------|----------|----------|------|
|
|
215
|
+
| CVE-... | ... | ... | ... | CRITICAL | package-lock.json |
|
|
216
|
+
|
|
217
|
+
## Secrets Found (Trivy)
|
|
218
|
+
|
|
219
|
+
| Rule | File | Line |
|
|
220
|
+
|------|------|------|
|
|
221
|
+
| aws-access-key-id | src/config.ts | 14 |
|
|
222
|
+
|
|
223
|
+
## IaC Misconfigurations (Trivy config)
|
|
224
|
+
|
|
225
|
+
| Rule | File | Severity | Description |
|
|
226
|
+
|------|------|----------|-------------|
|
|
227
|
+
| AVD-DS-0002 | Dockerfile | HIGH | Running as root |
|
|
228
|
+
|
|
229
|
+
## Framework Best Practices (Context7)
|
|
230
|
+
|
|
231
|
+
For each framework consulted, one paragraph summarizing the guidance applied.
|
|
232
|
+
|
|
233
|
+
If Context7 was unavailable, include the warning block.
|
|
234
|
+
|
|
235
|
+
## Well-Implemented Aspects
|
|
236
|
+
- <short list for tone calibration; does not affect verdict>
|
|
237
|
+
|
|
238
|
+
## Recommendations
|
|
239
|
+
1. <action for blocking findings>
|
|
240
|
+
2. <action for observations>
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
## Integration With Other dw-* Commands
|
|
244
|
+
|
|
245
|
+
- **`/dw-code-review`** (Level 3): for TS/Python/C#/Rust projects, invokes this command as step 6.7 "Security Layer" and hard-gates on the result. APPROVED cannot be emitted if `security-check.md` is missing or REJECTED.
|
|
246
|
+
- **`/dw-review-implementation`** (Level 2): for TS/Python/C#/Rust projects that touch code, invokes this command and maps its findings into a "Security Gaps" category in the interactive corrections cycle.
|
|
247
|
+
- **`/dw-generate-pr`**: hard gate — for supported-language projects, blocks the PR if `security-check.md` is missing or REJECTED from the current session.
|
|
248
|
+
- **`/dw-bugfix --analysis`**: if the root cause area involves auth / secrets / external input, suggests running this command before the fix.
|
|
249
|
+
|
|
250
|
+
## Critical Rules
|
|
251
|
+
|
|
252
|
+
- <critical>NO bypass flag. The command does not accept `--skip`, `--ignore`, `--allowlist`.</critical>
|
|
253
|
+
- <critical>Trivy is required. If missing, abort with install instructions. Do NOT silently skip the SCA layer.</critical>
|
|
254
|
+
- <critical>Context7 MCP is consulted when frameworks are detected. Degradation to offline mode must be visible in the report.</critical>
|
|
255
|
+
- Do NOT modify source code — this command detects only.
|
|
256
|
+
- Do NOT re-flag findings already tracked as accepted in a prior ADR (`.dw/spec/*/adrs/adr-*.md` with status `Accepted` and topic covering the finding).
|
|
257
|
+
- If running without PRD scope (raw path), emit the report to stdout — do not write to arbitrary locations.
|
|
258
|
+
|
|
259
|
+
## Error Handling
|
|
260
|
+
|
|
261
|
+
- Trivy missing → abort with install instructions (see `install-deps`)
|
|
262
|
+
- `.dw/spec/<slug>/` missing → check if scope is a raw path; otherwise abort asking for explicit scope
|
|
263
|
+
- Native audit tool missing (e.g., `pip-audit`) → skip with visible note in report; do not fail
|
|
264
|
+
- Context7 MCP unavailable → visible warning in report; do not fail
|
|
265
|
+
- Scope contains 0 files of supported languages → abort (see step 0)
|
|
266
|
+
|
|
267
|
+
## Inspired by
|
|
268
|
+
|
|
269
|
+
`dw-security-check` is dev-workflow-native. Conceptually inspired by the open-source skills surfaced via `/find-skills` (`supercent-io/skills-template@security-best-practices`, `hoodini/ai-agents-skills@owasp-security`, `github/awesome-copilot@agent-owasp-compliance`), but implemented from scratch with native integration to dev-workflow's primitives (`dw-verify`, `dw-review-rigor`, `security-review`) and Trivy — none of which those skills integrate.
|
|
270
|
+
|
|
271
|
+
</system_instructions>
|
|
@@ -4,16 +4,24 @@
|
|
|
4
4
|
|
|
5
5
|
{{CONTEXT_DESCRIPTION}}
|
|
6
6
|
|
|
7
|
+
## Product Inventory
|
|
8
|
+
|
|
9
|
+
<!-- Existing product features mapped (product level, not code level). Fill in by reading .dw/spec/prd-*/prd.md and .dw/rules/index.md. If greenfield, write "greenfield". -->
|
|
10
|
+
|
|
11
|
+
- **[feature 1]** — `.dw/spec/prd-<slug>/prd.md` — status
|
|
12
|
+
- **[feature 2]** — `.dw/rules/index.md#module-Y`
|
|
13
|
+
- ...
|
|
14
|
+
|
|
7
15
|
## Options Matrix
|
|
8
16
|
|
|
9
17
|
| Criteria | Option A: {{NAME_A}} | Option B: {{NAME_B}} | Option C: {{NAME_C}} |
|
|
10
18
|
|----------|----------------------|----------------------|----------------------|
|
|
11
|
-
| **
|
|
19
|
+
| **Type & Related Feature** | `[IMPROVES: <feat>]` \| `[CONSOLIDATES: <A>+<B>]` \| `[NEW]` | same | same |
|
|
20
|
+
| **Approach (product)** | | | |
|
|
12
21
|
| **Effort** | Low / Medium / High | Low / Medium / High | Low / Medium / High |
|
|
13
22
|
| **Risk** | Low / Medium / High | Low / Medium / High | Low / Medium / High |
|
|
14
|
-
| **
|
|
15
|
-
| **
|
|
16
|
-
| **Dependencies** | | | |
|
|
23
|
+
| **User value** | | | |
|
|
24
|
+
| **Dependencies (on other features)** | | | |
|
|
17
25
|
|
|
18
26
|
## Trade-offs
|
|
19
27
|
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: idea-onepager
|
|
3
|
+
schema_version: "1.0"
|
|
4
|
+
status: draft
|
|
5
|
+
date: YYYY-MM-DD
|
|
6
|
+
classification: improves | consolidates | new
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Idea: [Short, imperative title]
|
|
10
|
+
|
|
11
|
+
## Problem Statement
|
|
12
|
+
|
|
13
|
+
[Reframe the raw idea as a "How might we" sentence:
|
|
14
|
+
**How might we** [verb] **for** [user/segment] **so that** [outcome/measurable value]?
|
|
15
|
+
|
|
16
|
+
Focus on the problem, not the solution. Avoid jumping into "how to implement".]
|
|
17
|
+
|
|
18
|
+
## Product Context (mapped existing features)
|
|
19
|
+
|
|
20
|
+
[Inventory of product features relevant to this idea. **Product level, not code level.** List what the product already delivers today that relates to the idea.
|
|
21
|
+
|
|
22
|
+
Sources:
|
|
23
|
+
- PRDs in `.dw/spec/prd-*/prd.md` (features already delivered or in development)
|
|
24
|
+
- `.dw/rules/index.md` (product overview)
|
|
25
|
+
- `.planning/intel/` if GSD is installed
|
|
26
|
+
|
|
27
|
+
Format:]
|
|
28
|
+
|
|
29
|
+
- **[feature A name]** — `.dw/spec/prd-<slug>/prd.md` — status: live / in development
|
|
30
|
+
- **[feature B name]** — `.dw/rules/index.md#module-Y` — status: live
|
|
31
|
+
- **[feature C name]** — PRD in progress, see `tasks.md`
|
|
32
|
+
|
|
33
|
+
> If the product is greenfield (no PRDs or rules yet), write: "Feature Inventory: greenfield — no product artifacts yet. This is the first recorded idea."
|
|
34
|
+
|
|
35
|
+
## Classification & Rationale
|
|
36
|
+
|
|
37
|
+
**Type:** IMPROVES | CONSOLIDATES | NEW
|
|
38
|
+
|
|
39
|
+
[Pick ONE of the three and justify:]
|
|
40
|
+
|
|
41
|
+
- **If IMPROVES** — which existing feature is being improved and why improving is worth more than creating a separate feature. Cite the original PRD.
|
|
42
|
+
- **If CONSOLIDATES** — which features are being merged, the gain from unifying (more cohesive UX, less duplicate code, consolidated data). List the original PRDs that become "superseded" (or under review).
|
|
43
|
+
- **If NEW** — why the product needs this capability now, where it connects to existing features (even new features are rarely fully isolated), and which gap it fills.
|
|
44
|
+
|
|
45
|
+
## Recommended Direction
|
|
46
|
+
|
|
47
|
+
[The recommended approach, 1 paragraph, in **product language**:
|
|
48
|
+
- User journey (who does what, when, why)
|
|
49
|
+
- Value delivered
|
|
50
|
+
- Boundary (what this idea covers and what's explicitly out)
|
|
51
|
+
|
|
52
|
+
**DO NOT write technical architecture here** — that's the techspec's job.]
|
|
53
|
+
|
|
54
|
+
## MVP Scope
|
|
55
|
+
|
|
56
|
+
[The smallest version that delivers real value. Thought in **user stories**, not technical tasks.
|
|
57
|
+
|
|
58
|
+
- As a [persona], I can [action] so that [benefit]
|
|
59
|
+
- As a [persona], I can [action] so that [benefit]
|
|
60
|
+
|
|
61
|
+
Ideally 2-4 stories. If it's more than 5, it's probably not MVP.]
|
|
62
|
+
|
|
63
|
+
## Not Doing (explicit)
|
|
64
|
+
|
|
65
|
+
[Tempting items that landed OUT of scope — and why. Forces scope discipline:]
|
|
66
|
+
|
|
67
|
+
- **[tempting item 1]** — reason: [out of scope because...]
|
|
68
|
+
- **[tempting item 2]** — reason: [could become v2 if hypothesis X validates]
|
|
69
|
+
|
|
70
|
+
## Key Assumptions to Validate
|
|
71
|
+
|
|
72
|
+
[What must be true for this direction to work. Each assumption with a test — ideally **with a user**, not with code.]
|
|
73
|
+
|
|
74
|
+
- **[assumption 1]** — test: [interview 5 users in segment X / market research / low-fidelity prototype]
|
|
75
|
+
- **[assumption 2]** — test: [metric Y rises by Z% within 2 weeks of release]
|
|
76
|
+
|
|
77
|
+
## Open Questions
|
|
78
|
+
|
|
79
|
+
[Questions that don't yet have an answer and that the user (or stakeholder) must answer before the PRD:]
|
|
80
|
+
|
|
81
|
+
- [Question 1 affecting scope]
|
|
82
|
+
- [Question 2 affecting priority]
|
|
83
|
+
|
|
84
|
+
## Next Step
|
|
85
|
+
|
|
86
|
+
Pick ONE:
|
|
87
|
+
|
|
88
|
+
- **`/dw-create-prd`** using this one-pager as input — when the direction is clear but we need to detail user stories, acceptance criteria, and hand off to techspec
|
|
89
|
+
- **`/dw-quick`** — when it's an IMPROVES so small that it fits in a single task (up to 3 files, no new endpoint/screen)
|
|
90
|
+
- **Stop here** — if any "Open Question" is blocking, stop and resolve with the stakeholder before advancing
|
|
@@ -13,8 +13,10 @@ Você é um facilitador de brainstorming para o workspace atual. Este comando ex
|
|
|
13
13
|
|
|
14
14
|
## Flags
|
|
15
15
|
|
|
16
|
-
- **(padrão)**: brainstorm normal com 3-7 opções (conservadora, equilibrada, ousada) e trade-offs
|
|
16
|
+
- **(padrão)**: brainstorm normal com 3-7 opções (conservadora, equilibrada, ousada) e trade-offs. Se o produto tem PRDs ou rules, **Product Inventory** é produzido automaticamente e cada opção recebe tag de classificação.
|
|
17
|
+
- **`--onepager`**: ao final do brainstorm, gera um one-pager durável em `.dw/spec/ideas/<slug>.md` (usando `.dw/templates/idea-onepager.md`) com Feature Inventory + Classification & Rationale + MVP Scope + Not Doing + Assumptions. Use quando quiser um artefato de produto persistido antes de seguir para `/dw-create-prd`.
|
|
17
18
|
- **`--council`**: após o brainstorm normal, invoca a skill `dw-council` para stress-test das top 2-3 opções através de 3-5 archetypes (pragmatic-engineer, architect-advisor, security-advocate, product-mind, devils-advocate). Útil quando a escolha é de alto impacto e há genuine dissent entre caminhos.
|
|
19
|
+
- Flags são combináveis: `--onepager --council` produz one-pager após debate do council.
|
|
18
20
|
|
|
19
21
|
## Fluxograma de Decisão: Brainstorm vs PRD Direto
|
|
20
22
|
|
|
@@ -46,6 +48,7 @@ Quando disponíveis no projeto em `./.agents/skills/`, use para enriquecer a ide
|
|
|
46
48
|
## Referência do Template
|
|
47
49
|
|
|
48
50
|
- Template da matriz de brainstorm: `.dw/templates/brainstorm-matrix.md` (relativo ao workspace root)
|
|
51
|
+
- Template do one-pager durável: `.dw/templates/idea-onepager.md` (usado com flag `--onepager`)
|
|
49
52
|
|
|
50
53
|
Use este comando quando o usuario quiser:
|
|
51
54
|
- gerar ideias para produto, UX, arquitetura ou automacao
|
|
@@ -56,37 +59,57 @@ Use este comando quando o usuario quiser:
|
|
|
56
59
|
|
|
57
60
|
## Comportamento obrigatorio
|
|
58
61
|
|
|
62
|
+
<critical>O brainstorm é fase **nível de produto**, não técnica. NÃO entre em arquitetura, stack, endpoints, schemas. Isso é trabalho do techspec. Aqui trabalhamos jornada do usuário, valor, features e fronteiras.</critical>
|
|
63
|
+
|
|
59
64
|
1. Comece resumindo o problema em 1 a 3 frases.
|
|
60
|
-
2.
|
|
61
|
-
3.
|
|
62
|
-
|
|
63
|
-
-
|
|
64
|
-
-
|
|
65
|
-
-
|
|
66
|
-
|
|
67
|
-
5.
|
|
68
|
-
6.
|
|
69
|
-
|
|
65
|
+
2. **Reformule como "How Might We"**: transforme a ideia bruta em `How might we [verbo] para [usuário] de forma que [resultado]?`. Isso tira o time de "solution mode" prematuro.
|
|
66
|
+
3. **Product Inventory (obrigatório se o produto existe)**:
|
|
67
|
+
- Se `.dw/spec/prd-*/` tem PRDs OU `.dw/rules/index.md` existe, leia esses artefatos para mapear o **inventário de features do produto atual** (nível de produto, não de código).
|
|
68
|
+
- Fontes a consultar: `.dw/spec/prd-*/prd.md` (seções Overview / Main Features / User Stories), `.dw/rules/index.md` e `.dw/rules/<modulo>.md`, `.planning/intel/` se existir.
|
|
69
|
+
- Produza um **Feature Inventory curto (5-12 bullets)** antes de divergir: "o produto hoje faz X, Y, Z".
|
|
70
|
+
- Se o projeto é greenfield (sem PRDs nem rules), registre: "Feature Inventory: greenfield — nenhum artefato de produto ainda".
|
|
71
|
+
4. Se faltar contexto essencial para o usuário (problema, persona, valor esperado), faça perguntas curtas e objetivas antes de expandir.
|
|
72
|
+
5. Estruture o brainstorming em multiplas direcoes, evitando fixar cedo demais em uma unica resposta.
|
|
73
|
+
6. Para cada direção (3-7), explicite:
|
|
74
|
+
- **Tag de classificação obrigatória**: `[IMPROVES: <feature existente>]` | `[CONSOLIDATES: <feat A> + <feat B>]` | `[NEW]`
|
|
75
|
+
- ideia central (em linguagem de produto — jornada, valor, fronteira)
|
|
76
|
+
- benefícios
|
|
77
|
+
- riscos ou limitações
|
|
78
|
+
- nível de esforço aproximado
|
|
79
|
+
7. Sempre que fizer sentido, inclua alternativas conservadora, equilibrada e ousada.
|
|
80
|
+
8. Feche com recomendação pragmática e próximos passos claros.
|
|
81
|
+
9. **Se a flag `--onepager` estiver presente**: ao final, gerar `.dw/spec/ideas/<slug>.md` usando `.dw/templates/idea-onepager.md`, preenchendo Feature Inventory, Classification & Rationale, Recommended Direction (linguagem de produto), MVP Scope (user stories), Not Doing, Key Assumptions e Open Questions. Apresentar path ao usuário ao final.
|
|
70
82
|
|
|
71
83
|
## Formato de resposta preferido
|
|
72
84
|
|
|
73
|
-
### 1.
|
|
85
|
+
### 1. How Might We
|
|
86
|
+
- frase reformulada
|
|
87
|
+
|
|
88
|
+
### 2. Product Inventory
|
|
89
|
+
- 5-12 bullets de features existentes mapeadas (ou "greenfield")
|
|
90
|
+
|
|
91
|
+
### 3. Enquadramento
|
|
74
92
|
- objetivo
|
|
75
93
|
- restricoes
|
|
76
94
|
- criterios de decisao
|
|
77
95
|
|
|
78
|
-
###
|
|
79
|
-
-
|
|
80
|
-
-
|
|
96
|
+
### 4. Opções (matriz `brainstorm-matrix.md`)
|
|
97
|
+
- 3 a 7 opções distintas
|
|
98
|
+
- cada opção com tag `[IMPROVES] / [CONSOLIDATES] / [NEW]`
|
|
99
|
+
- evite listar variações superficiais da mesma ideia
|
|
81
100
|
|
|
82
|
-
###
|
|
101
|
+
### 5. Convergência
|
|
83
102
|
- recomende 1 ou 2 caminhos
|
|
84
103
|
- diga por que eles vencem no contexto atual
|
|
85
104
|
|
|
86
|
-
###
|
|
105
|
+
### 6. One-pager (se `--onepager`)
|
|
106
|
+
- path do arquivo criado em `.dw/spec/ideas/<slug>.md`
|
|
107
|
+
|
|
108
|
+
### 7. Próximos passos
|
|
87
109
|
- lista curta e executavel
|
|
88
110
|
- se apropriado, sugira qual comando usar em seguida:
|
|
89
|
-
- `/dw-create-prd`
|
|
111
|
+
- `/dw-create-prd` (principal sucessor; aceita one-pager como input reduzindo perguntas de clarificação)
|
|
112
|
+
- `/dw-quick` (se é IMPROVES pequeno que cabe em task única, ≤3 arquivos)
|
|
90
113
|
- `/dw-create-techspec`
|
|
91
114
|
- `/dw-create-tasks`
|
|
92
115
|
- `/dw-bugfix`
|
|
@@ -113,8 +136,20 @@ Dependendo do pedido, o comando pode produzir:
|
|
|
113
136
|
## Encerramento
|
|
114
137
|
|
|
115
138
|
Ao final, sempre deixe o usuario em uma destas situacoes:
|
|
116
|
-
- com uma recomendacao clara
|
|
139
|
+
- com uma recomendacao clara (incluindo classificação IMPROVES/CONSOLIDATES/NEW)
|
|
117
140
|
- com perguntas melhores para decidir
|
|
118
141
|
- com um proximo comando do workspace para seguir
|
|
142
|
+
- com o one-pager em `.dw/spec/ideas/<slug>.md` (se `--onepager` foi usado)
|
|
143
|
+
|
|
144
|
+
## Inspired by
|
|
145
|
+
|
|
146
|
+
O padrão de codebase-grounded idea refinement é inspirado em [`addyosmani/agent-skills@idea-refine`](https://skills.sh/addyosmani/agent-skills/idea-refine) (Addy Osmani, Google — 1.4K+ installs). Adaptações para o dev-workflow:
|
|
147
|
+
|
|
148
|
+
- **Nível de produto, não de código**: enquanto `idea-refine` usa Glob/Grep/Read em `src/*`, aqui lemos **PRDs + rules + intel** para mapear o **inventário de features** do produto. O brainstorm continua sendo produtual.
|
|
149
|
+
- **Classificação explícita** (IMPROVES / CONSOLIDATES / NEW) como disciplina dev-workflow-nativa — força o time a decidir se a ideia é feature nova, consolidação ou melhoria de algo existente, antes de abrir um PRD.
|
|
150
|
+
- Output em `.dw/spec/ideas/<slug>.md` (irmão de `prd-<slug>/`) em vez de `docs/ideas/` — mantém a convenção de paths do dev-workflow.
|
|
151
|
+
- Integração com o pipeline existente: `/dw-create-prd` aceita o one-pager como input, reduzindo perguntas de clarificação.
|
|
152
|
+
|
|
153
|
+
Crédito: Addy Osmani e o padrão `idea-refine`.
|
|
119
154
|
|
|
120
155
|
</system_instructions>
|
|
@@ -23,6 +23,7 @@ Quando disponíveis no projeto em `./.agents/skills/`, use estas skills como apo
|
|
|
23
23
|
|
|
24
24
|
- `dw-review-rigor`: **SEMPRE** — aplica de-duplication (mesmo pattern em N arquivos = 1 finding), severity ordering (critical → high → medium → low), verify-before-flag, skip-what-linter-catches, e signal-over-volume. A tabela "Problemas Encontrados" do relatório segue essa disciplina.
|
|
25
25
|
- `dw-verify`: **SEMPRE** — invocada antes de emitir verdict `APROVADO` ou `APROVADO COM RESSALVAS`. Sem VERIFICATION REPORT PASS (test + lint + build), o verdict não pode sair como APROVADO.
|
|
26
|
+
- `/dw-security-check`: **SEMPRE para projetos TS/Python/C#/Rust** — invocado como step 6.7 (Camada de Segurança) antes de emitir verdict. Se o projeto usa linguagem suportada e `security-check.md` não existe OU tem status REJECTED, o verdict é **REPROVADO** — sem exceção.
|
|
26
27
|
- `security-review`: use quando auth, autorização, input externo, upload, SQL, integração externa, secrets, SSRF, XSS ou superfícies sensíveis estiverem presentes
|
|
27
28
|
- `vercel-react-best-practices`: use quando o diff tocar React/Next.js para revisar padrões de renderização, fetching, bundle, hidratação e performance
|
|
28
29
|
|
|
@@ -198,6 +199,15 @@ Se houver reviews anteriores em `{{PRD_PATH}}/reviews/` ou `{{PRD_PATH}}/dw-code
|
|
|
198
199
|
|
|
199
200
|
<critical>Invocar `dw-verify` e incluir o VERIFICATION REPORT no início do relatório. Sem PASS, o verdict só pode ser `REPROVADO` — nunca `APROVADO` ou `APROVADO COM RESSALVAS`.</critical>
|
|
200
201
|
|
|
202
|
+
### 6.7. Camada de Segurança (Obrigatório para projetos TS/Python/C#/Rust)
|
|
203
|
+
|
|
204
|
+
<critical>Para projetos em TypeScript/JavaScript, Python, C# ou Rust que tiveram código modificado no diff, invocar `/dw-security-check` com o mesmo `{{PRD_PATH}}`. Sem `security-check.md` presente no PRD OU com status diferente de CLEAN/PASSED WITH OBSERVATIONS, o verdict é **REPROVADO** — sem exceção.</critical>
|
|
205
|
+
|
|
206
|
+
- Se `/dw-security-check` retornar **REJECTED**: verdict automático **REPROVADO**. Incluir na seção "Problemas Encontrados" do relatório final os findings CRITICAL/HIGH do security-check com severity apropriada.
|
|
207
|
+
- Se retornar **PASSED WITH OBSERVATIONS**: pode seguir para APROVADO COM RESSALVAS, listando as observations medium/low como ressalvas.
|
|
208
|
+
- Se retornar **CLEAN**: prossegue normalmente para o verdict baseado nos demais critérios.
|
|
209
|
+
- Projetos em linguagens não suportadas pelo security-check (Go, Java, PHP, Ruby etc.) → pular este step com nota visível no relatório de code-review.
|
|
210
|
+
|
|
201
211
|
### 7. Gerar Relatório de Code Review (Obrigatório)
|
|
202
212
|
|
|
203
213
|
Salvar em `{{PRD_PATH}}/dw-code-review.md`:
|
|
@@ -9,7 +9,15 @@
|
|
|
9
9
|
- NÃO use quando os requisitos ainda estão vagos e inexplorados (use `/dw-brainstorm` primeiro)
|
|
10
10
|
|
|
11
11
|
## Posição no Pipeline
|
|
12
|
-
**Antecessor:** `/dw-brainstorm` (opcional) | **Sucessor:** `/dw-create-techspec`
|
|
12
|
+
**Antecessor:** `/dw-brainstorm` (opcional; pode passar one-pager como input) | **Sucessor:** `/dw-create-techspec`
|
|
13
|
+
|
|
14
|
+
## One-pager como Input (opcional)
|
|
15
|
+
|
|
16
|
+
Se existir `.dw/spec/ideas/<slug>.md` produzido por `/dw-brainstorm --onepager`, **leia-o antes de fazer perguntas**. O one-pager já traz: Problem Statement, Feature Inventory do produto, Classification (IMPROVES/CONSOLIDATES/NEW), Recommended Direction, MVP Scope, Not Doing, Key Assumptions e Open Questions.
|
|
17
|
+
|
|
18
|
+
Com um one-pager válido (todos os campos preenchidos), **reduza o mínimo de perguntas de clarificação de 7 para 4** — foque apenas em lacunas remanescentes (ex: acceptance criteria específicos, métricas de sucesso concretas, fluxos de erro, edge cases). NÃO repita perguntas já respondidas no one-pager.
|
|
19
|
+
|
|
20
|
+
No PRD final, adicionar seção "Origem da Ideia" citando o one-pager e preservando a classification tag.
|
|
13
21
|
|
|
14
22
|
## Guia de Clareza de Requisitos
|
|
15
23
|
|
|
@@ -71,6 +79,7 @@
|
|
|
71
79
|
- O que NÃO está no escopo
|
|
72
80
|
- **Projetos impactados** (consulte `.dw/rules/index.md` para identificar quais sistemas são afetados)
|
|
73
81
|
- <critical>NÃO GERE O PRD SEM ANTES FAZER NO MINIMO 7 PERGUNTAS DE CLARIFICAÇÃO</critical>
|
|
82
|
+
- <critical>**EXCEÇÃO**: Se um one-pager `.dw/spec/ideas/<slug>.md` foi passado como input e tem todos os campos preenchidos, o mínimo cai para **4 perguntas** — foque em lacunas (acceptance criteria, métricas, edge cases). NÃO repita perguntas já respondidas no one-pager.</critical>
|
|
74
83
|
|
|
75
84
|
### 2. Planejar (Obrigatório)
|
|
76
85
|
Crie um plano de desenvolvimento do PRD incluindo:
|
|
@@ -14,8 +14,11 @@
|
|
|
14
14
|
| Skill | Gatilho |
|
|
15
15
|
|-------|---------|
|
|
16
16
|
| `dw-verify` | **SEMPRE** — invocada antes do `git push`. Sem VERIFICATION REPORT PASS na sessão após a última edição de código, o PR **NÃO** pode ser criado. |
|
|
17
|
+
| `/dw-security-check` | **SEMPRE para projetos TS/Python/C#/Rust** — `security-check.md` com status ≠ REJECTED é obrigatório para projetos em linguagem suportada. |
|
|
17
18
|
|
|
18
|
-
<critical>Hard gate: se a sessão atual não tem um VERIFICATION REPORT PASS de `dw-verify` produzido APÓS a última edição/commit, PARAR e invocar `dw-verify` antes de prosseguir. PR é um artefato permanente — exige o maior rigor de verificação.</critical>
|
|
19
|
+
<critical>Hard gate 1 (verify): se a sessão atual não tem um VERIFICATION REPORT PASS de `dw-verify` produzido APÓS a última edição/commit, PARAR e invocar `dw-verify` antes de prosseguir. PR é um artefato permanente — exige o maior rigor de verificação.</critical>
|
|
20
|
+
|
|
21
|
+
<critical>Hard gate 2 (security): para projetos TS/Python/C#/Rust, se `{{PRD_PATH}}/security-check.md` não existir OU tiver status REJECTED, PARAR e invocar `/dw-security-check` antes de prosseguir. Vulnerabilidades HIGH/CRITICAL NÃO podem chegar ao PR. Para outras linguagens (Go, Java, etc.), este gate é pulado com nota.</critical>
|
|
19
22
|
|
|
20
23
|
## Uso
|
|
21
24
|
|
|
@@ -25,6 +25,8 @@ Você é um assistente de ajuda do workspace. Quando invocado, apresente ao usu
|
|
|
25
25
|
| design, ui, redesign | `/dw-redesign-ui` | Auditoria + propostas + implementação visual |
|
|
26
26
|
| decisão, adr, arquitetura | `/dw-adr` | Registrar Architecture Decision Record |
|
|
27
27
|
| debate, council, stress-test, opiniões | `/dw-brainstorm --council` ou `/dw-create-techspec --council` | Invoca `dw-council` para debate multi-advisor |
|
|
28
|
+
| security, segurança, vulnerabilidade, owasp, trivy, cve | `/dw-security-check` | Check multi-camada rígido (OWASP estático + Trivy SCA/IaC + audit nativo) para TS/Python/C#/Rust |
|
|
29
|
+
| refinamento, refine, idea, one-pager, ideia | `/dw-brainstorm --onepager` | Refinamento de ideia com Product Inventory + classification (IMPROVES/CONSOLIDATES/NEW) + one-pager durável |
|
|
28
30
|
| reverter, rollback de task | `/dw-revert-task` | Revert seguro com check de dependências |
|
|
29
31
|
| hotfix, mudança rápida | `/dw-quick` | Task pontual com garantias sem PRD |
|
|
30
32
|
| retomar, onde parei | `/dw-resume` | Restaura contexto da sessão anterior |
|
|
@@ -135,6 +137,7 @@ Este workspace utiliza um sistema de comandos AI que automatiza o ciclo completo
|
|
|
135
137
|
| `/dw-review-implementation` | Compara PRD vs código (FRs, endpoints, tasks) | Path do PRD | Relatório de gaps |
|
|
136
138
|
| `/dw-code-review` | Code review formal (qualidade, rules, testes) | Path do PRD | `code-review.md` |
|
|
137
139
|
| `/dw-refactoring-analysis` | Auditoria de code smells e oportunidades de refatoração (catálogo Fowler) | Path do PRD | `refactoring-analysis.md` |
|
|
140
|
+
| `/dw-security-check` | Check de segurança rígido (OWASP estático + Trivy SCA/IaC + audit nativo) para TS/Python/C#/Rust | Path do PRD ou código | `security-check.md` |
|
|
138
141
|
|
|
139
142
|
### Versionamento
|
|
140
143
|
|
|
@@ -7,6 +7,7 @@ Voce e um executor de tasks rapidas. Este comando existe para implementar mudanc
|
|
|
7
7
|
## Quando Usar
|
|
8
8
|
- Use para mudancas pequenas que nao justificam o pipeline completo (PRD -> TechSpec -> Tasks)
|
|
9
9
|
- Use para hotfixes, ajustes de config, atualizacoes de dependencias, refatoracoes pontuais
|
|
10
|
+
- Use quando invocado apos `/dw-brainstorm --onepager` e o one-pager tem classificacao `[IMPROVES]` com MVP Scope cabendo em ≤3 arquivos (skip-PRD path)
|
|
10
11
|
- NAO use para features novas com multiplos requisitos (use `/dw-create-prd`)
|
|
11
12
|
- NAO use para bugs complexos (use `/dw-bugfix`)
|
|
12
13
|
|
|
@@ -28,13 +29,14 @@ Voce e um executor de tasks rapidas. Este comando existe para implementar mudanc
|
|
|
28
29
|
## Comportamento Obrigatorio
|
|
29
30
|
|
|
30
31
|
1. Leia `.dw/rules/` para entender padroes e convencoes do projeto
|
|
31
|
-
2.
|
|
32
|
-
3.
|
|
33
|
-
4.
|
|
34
|
-
5.
|
|
35
|
-
6. Execute
|
|
36
|
-
7.
|
|
37
|
-
8.
|
|
32
|
+
2. **Se um one-pager existe** em `.dw/spec/ideas/<slug>.md` e foi passado como input, leia-o primeiro. Se classification for `[IMPROVES]` e MVP Scope cabe em ≤3 arquivos, prosseguir. Se for `[NEW]` ou `[CONSOLIDATES]` de escopo maior, alertar e redirecionar para `/dw-create-prd`.
|
|
33
|
+
3. Resuma a mudanca em 1-2 frases e confirme escopo com o usuario
|
|
34
|
+
4. Se a mudanca parecer grande demais (>3 arquivos, >100 linhas), alerte e sugira `/dw-create-prd`
|
|
35
|
+
5. Implemente a mudanca seguindo convencoes do projeto
|
|
36
|
+
6. Execute testes existentes relevantes (unit, integration)
|
|
37
|
+
7. Execute lint se configurado no projeto
|
|
38
|
+
8. Invoque `dw-verify` e inclua o VERIFICATION REPORT no output antes de commitar. Sem PASS, NAO commit.
|
|
39
|
+
9. Crie commit atomico semantico com a mudanca
|
|
38
40
|
|
|
39
41
|
## Integracao GSD
|
|
40
42
|
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
| Skill | Gatilho |
|
|
29
29
|
|-------|---------|
|
|
30
30
|
| `dw-review-rigor` | **SEMPRE** — ao listar gaps entre PRD/TechSpec e código, aplicar de-duplication (mesmo gap em N módulos = 1 entrada), severity ordering e verify-intent-before-flag |
|
|
31
|
+
| `/dw-security-check` | **SEMPRE para projetos TS/Python/C#/Rust com diff que toca código** — os findings viram uma categoria "Security Gaps" no ciclo interativo de correções. Se status REJECTED, os gaps são bloqueantes. |
|
|
31
32
|
|
|
32
33
|
## Variáveis de Entrada
|
|
33
34
|
|
|
@@ -42,6 +43,16 @@
|
|
|
42
43
|
2. Especificações técnicas da TechSpec
|
|
43
44
|
3. Tasks definidas no tasks.md
|
|
44
45
|
4. Código efetivamente implementado (via git diff/status)
|
|
46
|
+
5. **Segurança do código implementado** (via `/dw-security-check` para projetos TS/Python/C#/Rust)
|
|
47
|
+
|
|
48
|
+
## Camada de Segurança (Obrigatório para projetos TS/Python/C#/Rust)
|
|
49
|
+
|
|
50
|
+
<critical>Se o projeto usa TypeScript, Python, C# ou Rust e o diff toca código (não apenas docs), INVOCAR `/dw-security-check {{PRD_PATH}}` antes de listar gaps. O status e findings retornados alimentam a seção "Security Gaps" do relatório de Nível 2.</critical>
|
|
51
|
+
|
|
52
|
+
- Status **REJECTED** do security-check → os findings CRITICAL/HIGH viram gaps **bloqueantes** no ciclo interativo de correções (equivalente a gap de funcionalidade crítica não implementada)
|
|
53
|
+
- Status **PASSED WITH OBSERVATIONS** → os findings MEDIUM/LOW viram recomendações no ciclo
|
|
54
|
+
- Status **CLEAN** → seção "Security Gaps: Nenhum" no relatório
|
|
55
|
+
- Projeto em linguagem não suportada → nota no relatório indicando que a camada de segurança foi pulada
|
|
45
56
|
|
|
46
57
|
## Arquivos a Ler (Obrigatório)
|
|
47
58
|
|