Skip to content

Commit 4d55c21

Browse files
committed
add skill
1 parent ba7b366 commit 4d55c21

4 files changed

Lines changed: 251 additions & 180 deletions

File tree

.claude/skills/create-task/SKILL.md

Lines changed: 51 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,14 @@ an implementing agent 90% of the context it needs inline.
1111

1212
**Core principle:** Invest effort at creation time to save 10x at implementation time.
1313

14+
**Simplicity principle (MANDATORY):** The simplest correct solution wins. Every task
15+
this skill produces must bias toward the *minimum viable change* — reuse over create,
16+
extend over abstract, delete over refactor. Distinguish essential complexity
17+
(domain-inherent, cannot be removed) from accidental complexity (reducible) and
18+
eliminate the accidental. See `/reduce-complexity` for the full framework. Task
19+
descriptions that encourage "flexible", "extensible", "future-proof" designs without
20+
concrete current need are anti-patterns — reject them.
21+
1422
## Invocation
1523

1624
```
@@ -104,11 +112,29 @@ For the primary functions/types affected:
104112
- Note which modules depend on the affected code
105113
- Identify downstream effects of changes
106114
107-
### Step 4: Find Reusable Patterns
108-
Check for existing utilities that could be reused (per duplication prevention rules):
109-
- Search `crates/gossip-stdx/src/` for related helpers
115+
### Step 4: Find Reusable Patterns (simplicity-first search)
116+
Check for existing utilities that could be reused (per duplication prevention rules).
117+
**Rule of thumb:** if a helper exists, extend it; if a pattern exists, mirror it; if
118+
a type exists that is 80% of what you need, grow it instead of cloning it.
119+
120+
- Search `src/utils.rs` and `src/` broadly for related helpers
110121
- Check sibling modules for similar patterns
111122
- Note any existing abstractions that should be extended rather than duplicated
123+
- Flag candidates where the task can be reduced to calling existing code with
124+
different arguments — these are the cheapest wins
125+
126+
### Step 4.5: Identify Simplification Opportunities
127+
Before writing the Desired State, look for ways the work can be *smaller*:
128+
129+
- Can any step be deleted entirely? (dead paths, unused fields, redundant checks)
130+
- Can two branches merge into one? (guard clauses, early returns, let-else)
131+
- Is there a built-in or stdlib answer that removes a homegrown helper?
132+
- Is the current approach essentially or accidentally complex? If accidentally
133+
complex, the task should *reduce* it, not just patch around it.
134+
135+
Record these as "Simplification Opportunities" in the research output. They feed
136+
directly into the Desired State and Implementation Guidance so the task biases
137+
toward the minimum viable change.
112138
113139
### Step 5: Search Related Beads Tasks
114140
Run: `bd search "{keywords from title}" --limit 10`
@@ -149,6 +175,11 @@ For each relevant snippet:
149175
|---------|----------|-------------|
150176
(or "None found")
151177

178+
### Simplification Opportunities
179+
| Opportunity | Where | Effect |
180+
|-------------|-------|--------|
181+
(accidental complexity to remove as part of this task, or "None — scope is essential complexity only")
182+
152183
### Related Tasks
153184
| Task ID | Title | Relationship | Notes |
154185
|---------|-------|-------------|-------|
@@ -214,12 +245,16 @@ description (if `--quick`).
214245
{What exists today with code snippets and file:line references.}
215246

216247
```rust
217-
// crates/scanner-engine/src/engine/core.rs:142-158 — current boundary check
248+
// src/cache.rs:42-58 — current boundary check
218249
{actual code from research}
219250
```
220251

221252
## Desired State
222-
{What should exist after. Specific behavior, interface, or structure.}
253+
{What should exist after. Specific behavior, interface, or structure.
254+
**Simplicity gate:** Describe the minimum viable change. If the task proposes a new
255+
abstraction, a new module, a new trait, a new config knob, or a generalization,
256+
justify it by naming at least 2 concrete current call sites that need the
257+
flexibility. "Future-proofing" and "extensibility" are not justifications.}
223258

224259
## Implementation Guidance
225260

@@ -231,7 +266,7 @@ description (if `--quick`).
231266
{Existing patterns to mirror, with file:line refs. "None" if nothing specific.}
232267

233268
### Utilities to Reuse
234-
{From crates/gossip-stdx/src/ or siblings. "None found" if nothing applies.}
269+
{From src/ for or siblings. "None found" if nothing applies.}
235270

236271
### Blast Radius
237272
{Callers, downstream effects, call sites needing updates.}
@@ -248,7 +283,11 @@ Each snippet has a file:line header.}
248283
## Acceptance Criteria
249284
- [ ] {Specific verifiable condition}
250285
- [ ] All existing tests pass: `cargo test`
251-
- [ ] Code compiles clean: `cargo fmt --all && cargo check && cargo clippy --all-targets --all-features -- -D warnings`
286+
- [ ] Code compiles clean: `cargo fmt && cargo check && cargo clippy --all-targets -- -D warnings`
287+
- [ ] No net increase in accidental complexity — run `/reduce-complexity` on each
288+
modified file; any new HIGH/CRITICAL hotspots must be justified as essential
289+
or addressed in the same change.
290+
- [ ] No duplicated logic introduced (per duplication prevention rules in CLAUDE.md).
252291

253292
## Pointers
254293
{Where to look for the remaining ~10%: docs, related commits, design docs, files to read.}
@@ -349,9 +388,14 @@ Type: {type} | Priority: P{priority}
349388
| Skipping Related Work search | Creates duplicates, misses dependencies | Always run `bd search` |
350389
| Research agent reading 20+ files | Diminishing returns, bloats context | Cap at 8 files, focus on most relevant |
351390
| Silently creating a duplicate | Wastes implementation effort | Always present possible duplicates to user |
391+
| Describing a "flexible" or "generic" solution without current call sites | Premature abstraction — accidental complexity baked in | Require 2+ concrete call sites before allowing abstraction; otherwise specify concrete change |
392+
| Task that adds a new module/trait/config knob to "make it easier to extend later" | YAGNI violation — pays a complexity tax now for a hypothetical future | Specify the minimum change; open a follow-up task IF extension is actually needed later |
393+
| Scope-creeping: "while we're here, also refactor X" | Mixes concerns, inflates blast radius, blocks review | Split into separate tasks; each task does ONE thing |
352394

353395
## Related Skills
354396

397+
- `/reduce-complexity` — complexity framework this skill relies on to shape Desired State and Simplification Opportunities; invoke directly when in doubt about essential vs. accidental complexity
355398
- `/plan-forge` — creates implementation plans; use `--create-tasks` to auto-generate tasks from plan steps
356399
- `/execute-review-findings` — converts review findings to tasks (uses compatible template)
357400
- `/review-dispatch` — produces findings that may become tasks
401+
- `/review-task` — validates a task created by this skill; also runs simplicity checks

0 commit comments

Comments
 (0)