@xynogen/pix-skills 0.1.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.
@@ -0,0 +1,253 @@
1
+ ---
2
+ name: standup
3
+ description: This skill should be used when the user asks to "standup me", "buat standup", "create standup script", "generate standup", "standup hari ini", or any request to prepare a daily standup update. Handles fetching previous context from Notion, prompting the user, generating a script, and saving to Notion.
4
+ disable-model-invocation: true
5
+ ---
6
+
7
+ # Standup Script Skill
8
+
9
+ ## Overview
10
+
11
+ Automate daily standup script creation: pull most recent standup from Notion as context, prompt user interactively, generate natural-language script, save today's standup back to Notion.
12
+
13
+ ## Decision Tree
14
+
15
+ ```
16
+ User asks for standup
17
+
18
+ Check Notion MCP available?
19
+ ├── NO → Prompt user manually, generate script, output only (no save)
20
+ └── YES → Fetch most recent standup → Prompt user → Generate → Save to Notion
21
+ ```
22
+
23
+ ## Step-by-Step Workflow
24
+
25
+ ### Step 0: Check Notion MCP Availability
26
+
27
+ Before doing anything, verify Notion MCP reachable by calling `notion_notion-get-users` or any lightweight Notion tool.
28
+
29
+ - **MCP fails or unavailable**: Inform user, then continue from Step 2 without Notion context. Skip Step 4.
30
+ - **MCP available**: Proceed to Step 1.
31
+
32
+ ---
33
+
34
+ ### Step 1: Fetch Most Recent Standup from Notion
35
+
36
+ Search for most recent standup page — do NOT assume yesterday (may be Friday, pre-holiday, etc.).
37
+
38
+ 1. Search Notion with query `"Standup -"` scoped under Mei user page
39
+ 2. Parse all result titles matching pattern `Standup - YYYY-MM-DD`
40
+ 3. Pick one with **latest date**
41
+ 4. Fetch its full content for context
42
+
43
+ **No previous standup found**: skip to Step 2 with no prior context.
44
+
45
+ ---
46
+
47
+ ### Step 2: Prompt User with Questions
48
+
49
+ Use `question` tool to ask all 3 questions at once (parallel — single tool call):
50
+
51
+ | # | Header | Question |
52
+ |---|--------|----------|
53
+ | 1 | Yesterday | Did you finish the task from the last standup (`[last task]`), or is it still in progress? |
54
+ | 2 | Today | What will you work on today? |
55
+ | 3 | Blocker | Any updates on blockers from last standup? (resolved, still blocked, new blocker?) |
56
+
57
+ Populate question options from last standup content where possible (e.g., "Finished", "Still in progress", "Different task").
58
+
59
+ ---
60
+
61
+ ### Step 3: Generate Script
62
+
63
+ > 📌 Source of truth: **Standup Script** template page (`35d3d66a-a117-81b4-a276-f38a31b60c82`). Fetch it to copy EXACT callout structure, icons, color tokens — do NOT guess color values. Current tokens: `yellow_bg` / `green_bg` / `red_bg`.
64
+
65
+ Compose natural Indonesian standup script from user's answers. Visual layout uses **three colored Notion callouts** (one per section) preceded by salam line:
66
+
67
+ ```
68
+ Assalamualaikum, saya [Nama].
69
+
70
+ [💭 yellow_bg callout]
71
+ Kemarin — [task dari standup terakhir, status: selesai / dilanjutkan]
72
+
73
+ [🚀 green_bg callout]
74
+ Hari ini — [today's task]
75
+
76
+ [⛔ red_bg callout]
77
+ Blocker — [blocker update atau "Tidak ada blocker"]
78
+ ```
79
+
80
+ Rules:
81
+ - One callout per section — keep body to single short line where possible
82
+ - Use natural Bahasa Indonesia
83
+ - Salam + nama on single line at top (plain paragraph, not callout)
84
+ - Callout color mapping fixed: 💭 yellow / 🚀 green / ⛔ red
85
+ - Blocker resolved → mention explicitly ("Blocker sebelumnya sudah teratasi")
86
+ - New blocker → state clearly
87
+ - No blocker → body is "Tidak ada blocker"
88
+
89
+ ---
90
+
91
+ ### Step 4: Save to Notion (only if MCP available)
92
+
93
+ Standups organized into **month folders** (one page per month, Bahasa Indonesia) under **Standup** page. Save must target folder matching **today's month**, not folder the most recent standup lived in.
94
+
95
+ **Step 4a — Resolve month folder:**
96
+
97
+ 1. Determine today's month from today's actual date (run `date +%F`).
98
+ 2. Look under **Standup** page (`35d3d66a-a117-81d2-b521-d60d311aa96e`) for child page titled with Indonesian month name (e.g. `Mei`, `Juni`, `Juli`).
99
+ 3. **Folder exists** → use its page ID as save parent.
100
+ 4. **Does NOT exist** (new month) → create it first with `notion-create-pages`:
101
+ - Parent: Standup page `35d3d66a-a117-81d2-b521-d60d311aa96e` (month folders are **siblings** at this level — NOT nested inside previous month's folder)
102
+ - Title: Indonesian month name (e.g. `Juni`)
103
+ - Icon: `📅`
104
+ - Content: `*Standup notes — [English Month] [Year].*`
105
+ - Use returned page ID as save parent.
106
+
107
+ > ⚠️ Common mistake: saving today's standup into **previous** month's folder because that's where most recent standup was fetched from. Always re-resolve folder from today's month. Standup already created in wrong folder → move with `notion-move-pages` (param is `page_or_database_ids`, NOT `page_ids`).
108
+
109
+ **Step 4b — Create standup page** under resolved month folder.
110
+
111
+ **Title:** `Standup - YYYY-MM-DD` (use today's actual date)
112
+
113
+ **Content (three callout blocks + intro paragraph):**
114
+
115
+ 1. Paragraph: `Assalamualaikum, saya Fikri.`
116
+ 2. Callout — icon `💭`, color `yellow_bg`, body: `**Kemarin** — [task dari standup terakhir, status: selesai / dilanjutkan]`
117
+ 3. Callout — icon `🚀`, color `green_bg`, body: `**Hari ini** — [today's task dari user]`
118
+ 4. Callout — icon `⛔`, color `red_bg`, body: `**Blocker** — [blocker update atau "Tidak ada blocker"]`
119
+
120
+ > ⚠️ Color values MUST be Notion-flavored Markdown background tokens (`yellow_bg`, `green_bg`, `red_bg`) — NOT `*_background`. Wrong tokens silently dropped → callouts render colorless. Callout markdown form: `<callout icon="💭" color="yellow_bg">`.
121
+
122
+ Use `notion-create-pages` with explicit block content for callouts (not just markdown). After saving, return Notion page URL to user.
123
+
124
+ ---
125
+
126
+ ## Notion Page IDs
127
+
128
+ | Location | ID |
129
+ |----------|----|
130
+ | Work | `3363d66a-a117-8177-b3fb-eda2bfb94ebb` |
131
+ | Standup (month folders live here) | `35d3d66a-a117-81d2-b521-d60d311aa96e` |
132
+ | Standup Script (template / source of truth) | `35d3d66a-a117-81b4-a276-f38a31b60c82` |
133
+
134
+ > Month folders (Indonesian names: `Mei`, `Juni`, `Juli`, …) are **siblings** directly under Standup page, each with icon 📅. Created on demand — resolve folder for **today's month** at save time (search under Standup page), create if missing. Do NOT hardcode month folder IDs.
135
+
136
+ ---
137
+
138
+ ## Edge Cases
139
+
140
+ | Situation | Behavior |
141
+ |-----------|----------|
142
+ | Notion MCP unavailable | Skip fetch + save, generate script only |
143
+ | No previous standup found | Prompt without pre-filled options |
144
+ | Weekend gap (e.g., Monday standup) | Still pick most recent — could be Friday's |
145
+ | User says "different task" | Ask follow-up: "Apa yang dikerjakan kemarin?" |
146
+ | No blocker | Output: "Tidak ada blocker saat ini." |
147
+ | New month, no folder yet | Create month folder (Indonesian name) under Standup page, then save standup inside it |
148
+ | Standup saved in wrong month folder | Move it with `notion-move-pages` using `page_or_database_ids` param |
149
+
150
+ ---
151
+
152
+ ## Compact Workflow
153
+
154
+ **Trigger:** User says `compact [bulan]` (e.g., `compact june`, `compact mei`, `compact bulan juni`).
155
+
156
+ Ambil semua standup notes dari bulan tersebut → buat Notion database table per bulan.
157
+
158
+ ### Decision Tree
159
+
160
+ ```
161
+ User: "compact [bulan]"
162
+
163
+ Resolve bulan → cari month folder di Standup page
164
+
165
+ Fetch semua child pages (Standup - YYYY-MM-DD)
166
+
167
+ Fetch isi tiap page → extract Kemarin / Hari Ini / Blocker
168
+
169
+ Cek apakah database "Standup [Bulan] [Tahun]" sudah ada di month folder?
170
+ ├── SUDAH ADA → skip create, langsung insert rows yang belum ada
171
+ └── BELUM ADA → create database → insert semua rows
172
+
173
+ Enable wrap cells
174
+
175
+ Return URL database ke user
176
+ ```
177
+
178
+ ### Step-by-Step
179
+
180
+ #### Step 1 — Resolve Month Folder
181
+
182
+ 1. Parse bulan dari input user (support Bahasa Indonesia & English, e.g. `juni` / `june` / `Juni` / `June`).
183
+ 2. Search Notion untuk month folder di bawah Standup page (`35d3d66a-a117-81d2-b521-d60d311aa96e`).
184
+ 3. **Jika folder tidak ada** → inform user bahwa belum ada standup untuk bulan tersebut. Stop.
185
+
186
+ #### Step 2 — Fetch Semua Standup Pages
187
+
188
+ 1. Fetch month folder page → ambil semua child pages dengan title pattern `Standup - YYYY-MM-DD`.
189
+ 2. Fetch isi **setiap** child page secara paralel (batch dalam satu panggilan jika memungkinkan).
190
+ 3. Dari tiap page, extract:
191
+ - **Tanggal**: parse dari title (`YYYY-MM-DD`)
192
+ - **Kemarin**: isi callout `yellow_bg` (strip bold marker `**Kemarin** — `)
193
+ - **Hari Ini**: isi callout `green_bg` (strip bold marker `**Hari ini** — `)
194
+ - **Blocker**: isi callout `red_bg` (strip bold marker `**Blocker** — `)
195
+
196
+ #### Step 3 — Create atau Reuse Database
197
+
198
+ Database title format: `Standup [IndonesianMonth] [Year]` (e.g., `Standup Mei 2026`).
199
+
200
+ **Jika belum ada** → buat dengan `notion-create-database`:
201
+ - Parent: month folder page ID
202
+ - Schema:
203
+ ```sql
204
+ CREATE TABLE (
205
+ "Name" TITLE,
206
+ "Tanggal" DATE,
207
+ "Kemarin" RICH_TEXT,
208
+ "Hari Ini" RICH_TEXT,
209
+ "Blocker" RICH_TEXT
210
+ )
211
+ ```
212
+ - Setelah create, ambil `data_source_id` dari response (`collection://...`).
213
+
214
+ **Jika sudah ada** → fetch database → ambil `data_source_id` + cek rows yang sudah ada (hindari duplikat berdasarkan `Name`).
215
+
216
+ #### Step 4 — Insert Rows
217
+
218
+ Gunakan `notion-create-pages` dengan `parent: { data_source_id: "..." }`.
219
+
220
+ Per row:
221
+ ```json
222
+ {
223
+ "Name": "Standup - YYYY-MM-DD",
224
+ "date:Tanggal:start": "YYYY-MM-DD",
225
+ "date:Tanggal:is_datetime": 0,
226
+ "Kemarin": "[extracted text]",
227
+ "Hari Ini": "[extracted text]",
228
+ "Blocker": "[extracted text]"
229
+ }
230
+ ```
231
+
232
+ Batch semua rows dalam **satu** `notion-create-pages` call (max 5 per call jika banyak — split jika perlu).
233
+
234
+ #### Step 5 — Enable Wrap Cells
235
+
236
+ Setelah database dibuat, fetch database → ambil `view_id` dari `<views>` → update view:
237
+ ```
238
+ notion-update-view: WRAP CELLS true
239
+ ```
240
+
241
+ #### Step 6 — Return ke User
242
+
243
+ Return URL database Notion ke user.
244
+
245
+ ### Rules & Edge Cases
246
+
247
+ | Situasi | Behavior |
248
+ |---------|----------|
249
+ | Bulan tidak ditemukan di Notion | Inform user, stop |
250
+ | Database sudah ada | Reuse, skip rows yang sudah ada (cek by Name) |
251
+ | Page standup formatnya beda (ga ada callout) | Skip page tersebut, warn user |
252
+ | Bulan belum selesai (current month) | Tetap compact — insert semua yang ada sampai hari ini |
253
+ | Blocker kosong / "Belum Ada" | Tetap insert as-is |
@@ -0,0 +1,45 @@
1
+ ---
2
+ name: suggest
3
+ description: Multi-dimensional optimization and improvement recommendations. Use when user asks "how can I improve this", "what would you change", "any suggestions", "make this better", or wants prioritized options rather than a single fix.
4
+ disable-model-invocation: true
5
+ ---
6
+ # Suggest Directive
7
+
8
+ ## Goal
9
+ Produce ranked, actionable list of improvements — each concrete enough to act on without further research.
10
+
11
+ ## Below are what agent MUST do:
12
+
13
+ ### Phase 1: Ground in Reality
14
+ - **AUTO-RUN**: Read target code and its constraints before ideating. Don't suggest from assumptions.
15
+ - **CONSTRAINTS**: Note existing conventions, tech stack, prior architectural decisions. Suggestions must fit them.
16
+
17
+ ### Phase 2: Ideate Across Dimensions
18
+ Cover, where relevant:
19
+ - **DX** — developer experience, readability, locality of behavior.
20
+ - **UX** — user-facing behavior, latency, error messages.
21
+ - **Performance** — hot paths, allocations, queries.
22
+ - **Maintainability** — coupling, test coverage, dead code.
23
+
24
+ ### Phase 3: Rank
25
+ - Score each by **Impact × (1/Effort)**. High-impact/low-effort first.
26
+ - **YAGNI CHECK**: drop any suggestion that adds unused capability.
27
+
28
+ ### Phase 4: Report
29
+ ```
30
+ ## Suggestions (ranked)
31
+
32
+ ### 1. [Title] — Impact: High · Effort: Low
33
+ **Problem:** [what's wrong now] — `file:line`
34
+ **Change:** [exact change, with code if small]
35
+ **Why:** [benefit]
36
+
37
+ ### 2. [Title] — Impact: Med · Effort: Med
38
+ ...
39
+ ```
40
+
41
+ ## Red Flags — STOP
42
+ - Suggesting rewrite when local fix suffices.
43
+ - Vague advice ("improve error handling") without `file:line` and concrete change.
44
+ - Recommending feature nothing will use (violates YAGNI).
45
+ - Proposing changes that conflict with existing conventions you didn't check.
package/skills/task.md ADDED
@@ -0,0 +1,46 @@
1
+ ---
2
+ name: task
3
+ description: Task Orchestration and Ambiguity Resolution
4
+ disable-model-invocation: true
5
+ ---
6
+ # Task Orchestration Directive
7
+
8
+ ## Below are what agent MUST do:
9
+ - **AUTO-RUN**: Run terminal commands and tool calls needed proactively without confirmation unless explicit input required.
10
+ - **CONTEXT**: Synthesize intent from recent history. Link "orders" to last proposed `/plan` or `/suggest`.
11
+ - **RESOLVE**: Identify and fill "Human Ambiguities" (e.g., 'fix that' → define 'that' via `/audit` or `/search` context).
12
+ - **IMPACT**: Calculate implications of task. Identify affected docs, tests, downstream dependencies. Flag potential breaking changes.
13
+ - **PRE-FLIGHT**: Audit current system state. Confirm paths, versions, permissions. Map dependency chains that could break.
14
+
15
+ ## Phased Execution
16
+ Order tasks logically:
17
+ 1. **Backup** — Snapshot state if destructive changes planned.
18
+ 2. **Execution** — Implement changes in bite-sized steps (2-5 minutes each).
19
+ 3. **Configuration** — Apply config changes after code changes verified.
20
+ 4. **Validation** — Run `/test` and `/verify` to confirm correctness.
21
+
22
+ **CAUTION**: Run one chunk at a time. Verify outcome of Step N before starting Step N+1.
23
+
24
+ ## Bite-Sized Task Structure
25
+ Each task step MUST be atomic and verifiable:
26
+ ```
27
+ Step N: [Action]
28
+ - Files: [exact paths]
29
+ - Command: [exact command to run]
30
+ - Expected: [what success looks like]
31
+ ```
32
+
33
+ ## Batch Execution Pattern
34
+ For multi-task plans, execute in batches of 3 tasks:
35
+ 1. Execute batch → verify each step → report what was done
36
+ 2. Say: "Ready for feedback." and wait
37
+ 3. Apply feedback if any → execute next batch → repeat
38
+
39
+ ## Stop-When-Blocked Rule
40
+ Blocker hit mid-batch (missing dependency, failing test, unclear instruction):
41
+ - **STOP immediately** — don't guess or work around it
42
+ - Report blocker with exact context
43
+ - Ask for clarification before continuing
44
+
45
+ ## Report
46
+ Provide Final Answer using Response Contract, detailing exactly what was performed.
package/skills/test.md ADDED
@@ -0,0 +1,47 @@
1
+ ---
2
+ name: test
3
+ description: Test execution, analysis, and failure resolution using TDD
4
+ disable-model-invocation: true
5
+ ---
6
+ # Test Directive
7
+
8
+ ## The Iron Law
9
+ ```
10
+ NO PRODUCTION CODE WITHOUT A FAILING TEST FIRST
11
+ ```
12
+ Wrote code before the test? Delete it. Start over.
13
+
14
+ ## Below are what agent MUST do:
15
+
16
+ ### Red-Green-Refactor Cycle (for new features/bugfixes)
17
+ - **RED**: Write one minimal failing test showing what SHOULD happen. Run it. Confirm it fails for right reason (feature missing, not a typo).
18
+ - **GREEN**: Write SIMPLEST possible code to make test pass. No extra features. No refactoring other code.
19
+ - **VERIFY GREEN**: Run the test. Confirm it passes. Confirm all other tests still pass.
20
+ - **REFACTOR**: Clean up duplication and names. Keep tests green. Do NOT add new behavior.
21
+ - **REPEAT**: Write next failing test for next behavior.
22
+
23
+ ### Test Execution (for existing codebases)
24
+ - **AUTO-RUN**: Run terminal commands and tool calls proactively without confirmation.
25
+ - **DISCOVER**: Identify test frameworks and test files in project.
26
+ - **EXECUTE**: Run relevant tests with appropriate flags and coverage.
27
+ - **ANALYZE**: Parse test output to identify failures, errors, coverage gaps.
28
+ - **FIX**: Resolve test failures by addressing root causes in code or tests. Use `/debug` for complex failures.
29
+ - **REPORT**: Provide test results summary with pass/fail counts and any issues found.
30
+
31
+ ## Verification Checklist
32
+ Before marking work complete:
33
+ - [ ] Every new function/method has a test
34
+ - [ ] Watched each test FAIL before implementing
35
+ - [ ] Each test failed for expected reason
36
+ - [ ] Wrote minimal code to pass each test
37
+ - [ ] All tests pass with no errors or warnings
38
+ - [ ] Edge cases and error paths covered
39
+
40
+ Cannot check all boxes? You skipped TDD. Start over.
41
+
42
+ ## Red Flags — STOP and Start Over
43
+ - Code written before the test
44
+ - Test passes immediately (you're testing existing behavior)
45
+ - "I'll write tests after to verify it works"
46
+ - "Already manually tested all the edge cases"
47
+ - "Tests after achieve the same goals"
package/skills/tldr.md ADDED
@@ -0,0 +1,32 @@
1
+ ---
2
+ name: tldr
3
+ description: Maximum-density technical summary of workflows and purposes. Use when user asks "tldr", "summarize this", "give me the short version", "what's the gist", or needs the essence fast with zero filler.
4
+ disable-model-invocation: true
5
+ ---
6
+ # TLDR Directive
7
+
8
+ ## Goal
9
+ Strip to essence. Reader gets full picture in fewest tokens, no re-reading required.
10
+
11
+ ## Below are what agent MUST do:
12
+ - **AUTO-RUN**: Read what's needed to summarize accurately. Don't summarize from the filename.
13
+ - **SCOPE**: Tech only. No pleasantries, no preamble, no "in summary".
14
+ - **WORKFLOWS**: Name key workflows and their purpose, one line each.
15
+ - **DATA**: List key data points, configs, assumptions that matter.
16
+ - **CONFIDENCE**: Mark any uncertain claim with confidence note.
17
+ - **DENSITY**: Bullets over prose. One fact per bullet. No fact stated twice.
18
+
19
+ ## Output Format
20
+ ```
21
+ **[Subject]**
22
+ - [Core fact]
23
+ - [Core fact]
24
+ - [Key config/data] — `value`
25
+ - ⚠️ [Assumption or uncertain point] (confidence: X%)
26
+ ```
27
+
28
+ ## Red Flags — STOP
29
+ - Conversational filler ("Sure!", "In summary", "Hope this helps").
30
+ - Restating same fact in different words.
31
+ - Summarizing from name or title without reading source.
32
+ - Burying key point below background.
package/skills/ui.md ADDED
@@ -0,0 +1,36 @@
1
+ ---
2
+ name: ui
3
+ description: UI/UX design and implementation guidance for distinctive, production-grade frontend interfaces
4
+ disable-model-invocation: true
5
+ ---
6
+ # UI Design Directive
7
+
8
+ ## Core Philosophy
9
+ Create distinctive, production-grade frontend interfaces with high design quality. Avoid generic "AI slop" aesthetics. Every interface MUST have clear, intentional point of view.
10
+
11
+ ## Below are what agent MUST do:
12
+
13
+ ### Phase 1: Design Thinking (Before Coding)
14
+ - **PURPOSE**: Define what problem this solves and who uses it.
15
+ - **TONE**: Pick extreme aesthetic direction (e.g., brutally minimal, maximalist chaos, retro-futuristic, organic/natural, luxury/refined). Avoid safe, generic choices.
16
+ - **DIFFERENTIATION**: Identify one "unforgettable" element that makes this specific interface unique.
17
+ - **CONSTRAINTS**: Respect technical requirements (framework, performance, accessibility).
18
+
19
+ ### Phase 2: Aesthetic Execution
20
+ - **TYPOGRAPHY**: Choose beautiful, distinctive fonts. Avoid generic defaults (Arial, Inter, Roboto). Pair characterful display fonts with refined body fonts.
21
+ - **COLOR**: Commit to cohesive theme. Use sharp accents and dominant colors rather than timid, evenly-distributed palettes.
22
+ - **MOTION**: Use meaningful animations. Staggered page loads (animation-delay) create more impact than scattered micro-interactions.
23
+ - **COMPOSITION**: Use unexpected layouts, asymmetry, overlap, or generous negative space. Break the grid intentionally.
24
+ - **TEXTURE**: Create depth with noise, gradients, shadows, or grain overlays. Avoid flat, solid color backgrounds unless intentional.
25
+
26
+ ### Phase 3: Implementation
27
+ - **AUTO-RUN**: Run terminal commands and tool calls needed proactively without confirmation unless explicit input required.
28
+ - **PRODUCTION-GRADE**: Code must be functional, responsive, accessible.
29
+ - **COMPONENT-BASED**: Build modular, reusable components.
30
+ - **MATCH VISION**: Maximalist designs need elaborate code/animations; minimalist designs need perfect spacing and typography.
31
+
32
+ ## Red Flags — Avoid "AI Slop"
33
+ - **Generic Fonts**: Overused families like Inter, Roboto, Open Sans, system defaults.
34
+ - **Cliched Colors**: Purple gradients on white backgrounds, standard Bootstrap/Tailwind palettes.
35
+ - **Predictable Layouts**: Cookie-cutter cards, standard hero sections without character.
36
+ - **Lack of Texture**: Flat designs that feel "generated" rather than crafted.
@@ -0,0 +1,45 @@
1
+ ---
2
+ name: verify
3
+ description: Verification before completion — ensure it's actually fixed before claiming done
4
+ disable-model-invocation: true
5
+ ---
6
+ # Verify Directive
7
+
8
+ ## The Iron Law
9
+ ```
10
+ NEVER claim a task complete without running verification.
11
+ "It should work" is not verification. Evidence is verification.
12
+ ```
13
+
14
+ ## Below are what agent MUST do:
15
+
16
+ ### Step 1: Run the Tests
17
+ - Execute full test suite. Do NOT just run the specific test you wrote.
18
+ - Confirm: all tests pass, no new failures, no skipped tests without explanation.
19
+
20
+ ### Step 2: Reproduce the Original Issue
21
+ - Fixing a bug → reproduce original failure scenario, confirm it no longer occurs.
22
+ - Adding a feature → walk through exact user flow end-to-end.
23
+
24
+ ### Step 3: Check for Regressions
25
+ - Run any integration or smoke tests.
26
+ - Check adjacent functionality still works.
27
+ - Review the diff: does anything look unintentionally changed?
28
+
29
+ ### Step 4: Verify the Claim
30
+ Before saying "done", confirm:
31
+ - [ ] Specific issue/feature resolved/implemented
32
+ - [ ] All tests pass (including pre-existing tests)
33
+ - [ ] No new warnings or errors in output
34
+ - [ ] Code clean (no debug logs, no commented-out code)
35
+ - [ ] Documentation updated if public interface changed
36
+
37
+ ### Step 5: Report
38
+ - State what was verified and how.
39
+ - Anything still uncertain → say so explicitly. Do NOT hide uncertainty.
40
+
41
+ ## Red Flags — Do NOT Mark as Done If:
42
+ - Tests pass but you haven't reproduced original scenario
43
+ - "I believe it should work" without running it
44
+ - New warnings appeared that weren't there before
45
+ - You only ran the new test, not the full suite