@juancr11/sibu 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.
- package/README.md +198 -0
- package/bin/entrypoints/cli/command.js +1 -0
- package/bin/entrypoints/cli/create-program.js +33 -0
- package/bin/entrypoints/cli/execute-command.js +28 -0
- package/bin/entrypoints/cli/main.js +5 -0
- package/bin/features/doctor-project/command.js +1 -0
- package/bin/features/doctor-project/handler.js +194 -0
- package/bin/features/init-project/command.js +1 -0
- package/bin/features/init-project/handler.js +63 -0
- package/bin/features/list-skills/command.js +1 -0
- package/bin/features/list-skills/handler.js +55 -0
- package/bin/features/stop-managing-file/command.js +1 -0
- package/bin/features/stop-managing-file/handler.js +213 -0
- package/bin/features/sync-project/action-prompt.js +65 -0
- package/bin/features/sync-project/apply-action.js +81 -0
- package/bin/features/sync-project/command.js +1 -0
- package/bin/features/sync-project/handler.js +77 -0
- package/bin/features/sync-project/log-preview.js +62 -0
- package/bin/features/sync-project/preview.js +1 -0
- package/bin/features/use-skill/command.js +1 -0
- package/bin/features/use-skill/handler.js +197 -0
- package/bin/shared/catalog.js +199 -0
- package/bin/shared/hash.js +11 -0
- package/bin/shared/npm-version.js +178 -0
- package/bin/shared/object.js +3 -0
- package/bin/shared/paths.js +41 -0
- package/bin/shared/prompts.js +205 -0
- package/bin/shared/state.js +76 -0
- package/bin/shared/sync-preview.js +166 -0
- package/bin/shared/templates.js +60 -0
- package/bin/shared/types.js +1 -0
- package/bin/shared/workflow-mutation-readiness.js +30 -0
- package/bin/shared/workflow-targets.js +119 -0
- package/bin/sibu.js +6 -0
- package/package.json +68 -0
- package/templates/.codex/config.toml +1 -0
- package/templates/AGENTS.md +60 -0
- package/templates/CLAUDE.md +5 -0
- package/templates/GEMINI.md +5 -0
- package/templates/manifest.json +129 -0
- package/templates/skills/ai-implementation-plan-executor/SKILL.md +138 -0
- package/templates/skills/ai-implementation-planner/SKILL.md +213 -0
- package/templates/skills/architecture/command-pattern/SKILL.md +77 -0
- package/templates/skills/architecture/ddd-hexagonal/SKILL.md +212 -0
- package/templates/skills/clean-code/SKILL.md +109 -0
- package/templates/skills/feature-brief-writer/SKILL.md +219 -0
- package/templates/skills/golang/SKILL.md +82 -0
- package/templates/skills/nextjs/SKILL.md +94 -0
- package/templates/skills/product-vision-writer/SKILL.md +128 -0
- package/templates/skills/react/SKILL.md +75 -0
- package/templates/skills/scrum-master-planner/SKILL.md +191 -0
- package/templates/skills/technical-design-writer/SKILL.md +109 -0
- package/templates/skills/typescript/SKILL.md +111 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: nextjs
|
|
3
|
+
description: Use this skill when working on Next.js App Router files or framework-specific Next.js behavior.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# nextjs
|
|
7
|
+
|
|
8
|
+
Use this skill when working on Next.js App Router files or framework-specific Next.js behavior.
|
|
9
|
+
|
|
10
|
+
This skill covers Next.js conventions, boundaries, and rendering decisions. It does not cover React component design or UX strategy.
|
|
11
|
+
|
|
12
|
+
## Use this skill for
|
|
13
|
+
|
|
14
|
+
- `src/app/**` pages, layouts, route handlers, loading, error, and not-found files
|
|
15
|
+
- Server Component vs Client Component decisions
|
|
16
|
+
- Next.js data fetching and rendering placement
|
|
17
|
+
- route handler conventions
|
|
18
|
+
- metadata APIs
|
|
19
|
+
- App Router file conventions
|
|
20
|
+
- framework boundary decisions in Next.js files
|
|
21
|
+
|
|
22
|
+
## Core principles
|
|
23
|
+
|
|
24
|
+
### 1. Use App Router conventions directly
|
|
25
|
+
- Put route UI in `page.tsx`.
|
|
26
|
+
- Put shared route shell UI in `layout.tsx`.
|
|
27
|
+
- Put custom request handlers in `route.ts`.
|
|
28
|
+
- Use `loading.tsx`, `error.tsx`, and `not-found.tsx` for route segment states when they improve the user experience.
|
|
29
|
+
- Keep special files focused on their framework role.
|
|
30
|
+
|
|
31
|
+
### 2. Default to Server Components
|
|
32
|
+
- Pages and layouts are Server Components by default.
|
|
33
|
+
- Keep them as Server Components unless interactivity or browser-only APIs require a Client Component.
|
|
34
|
+
- Fetch initial and SEO-critical data on the server when possible.
|
|
35
|
+
- Pass only serializable props from Server Components to Client Components.
|
|
36
|
+
|
|
37
|
+
### 3. Use Client Components only when needed
|
|
38
|
+
Add `"use client"` only for code that needs client-side capabilities, such as:
|
|
39
|
+
- state and event handlers
|
|
40
|
+
- effects or lifecycle behavior
|
|
41
|
+
- browser-only APIs like `window`, `localStorage`, or geolocation
|
|
42
|
+
- client-only third-party components
|
|
43
|
+
|
|
44
|
+
Prefer isolating the smallest interactive subtree into a Client Component rather than turning a whole page or layout into a Client Component.
|
|
45
|
+
|
|
46
|
+
### 4. Keep `src/app/**` thin
|
|
47
|
+
- Treat `src/app/**` as a framework boundary.
|
|
48
|
+
- Pages and route handlers should call application/domain code instead of containing business logic.
|
|
49
|
+
- Keep request parsing, response formatting, redirects, and framework concerns in `src/app/**`.
|
|
50
|
+
- Move reusable business behavior out of App Router files.
|
|
51
|
+
|
|
52
|
+
### 5. Route handlers are framework adapters
|
|
53
|
+
- Define route handlers in `route.ts` files inside `app`.
|
|
54
|
+
- Use the Web `Request` and `Response` APIs.
|
|
55
|
+
- Keep handlers focused on HTTP concerns: parse input, call application behavior, and return a stable response.
|
|
56
|
+
- Do not put backend business rules directly in route handlers.
|
|
57
|
+
|
|
58
|
+
### 6. Use Next.js error and empty-state conventions
|
|
59
|
+
- Use `notFound()` for route resources that genuinely do not exist.
|
|
60
|
+
- Add `not-found.tsx` when a route segment needs a custom 404 UI.
|
|
61
|
+
- Add `loading.tsx` when a route segment benefits from an instant loading state.
|
|
62
|
+
- Add `error.tsx` for unexpected runtime errors in a route segment.
|
|
63
|
+
- Remember that `error.tsx` must be a Client Component.
|
|
64
|
+
|
|
65
|
+
### 7. Separate expected errors from unexpected errors
|
|
66
|
+
- Treat expected errors, such as validation failures, not-found cases, and user-correctable failures, as explicit states or return values.
|
|
67
|
+
- Let unexpected errors throw so route-level error boundaries can handle them.
|
|
68
|
+
- Keep client-safe messages in UI responses and logs/internal details at the server boundary.
|
|
69
|
+
|
|
70
|
+
### 8. Use metadata APIs instead of manual `<head>` tags
|
|
71
|
+
- Use `metadata` or `generateMetadata` for route metadata.
|
|
72
|
+
- Do not manually add `<title>` or `<meta>` tags in root layouts.
|
|
73
|
+
- Use file-based metadata conventions for icons, Open Graph images, robots, sitemap, and related files when appropriate.
|
|
74
|
+
|
|
75
|
+
### 9. Keep rendering and data ownership clear
|
|
76
|
+
- Server Components can fetch and prepare data for rendering.
|
|
77
|
+
- Client Components should own interaction state and browser behavior.
|
|
78
|
+
- Avoid duplicating derived state between server-rendered data and client state.
|
|
79
|
+
- Do not move data fetching to the client unless it is user-triggered, browser-specific, or intentionally client-side.
|
|
80
|
+
|
|
81
|
+
### 10. Prefer simple route segment design
|
|
82
|
+
- Use route groups and advanced routing features only when they clearly improve organization or behavior.
|
|
83
|
+
- Do not introduce parallel routes, intercepting routes, templates, or segment config unless the feature actually needs them.
|
|
84
|
+
- Prefer the standard App Router primitives first.
|
|
85
|
+
|
|
86
|
+
## Decision rule
|
|
87
|
+
|
|
88
|
+
When unsure, prefer:
|
|
89
|
+
1. Server Components by default
|
|
90
|
+
2. the smallest necessary Client Component boundary
|
|
91
|
+
3. App Router files as thin framework adapters
|
|
92
|
+
4. framework conventions over custom routing abstractions
|
|
93
|
+
5. `metadata` / `generateMetadata` over manual head management
|
|
94
|
+
6. explicit loading, not-found, and error states when the route needs them
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: product-vision-writer
|
|
3
|
+
description: Create product vision documents for products at any stage. Use when an assistant should interview the user with focused discovery questions, clarify product purpose, audience, positioning, principles, boundaries, voice, trust expectations, and success signals, then synthesize the answers into a human, opinionated, structured Markdown product vision document at docs/product-vision.md.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Product Vision Writer
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
Help write product vision documents that make a product feel clear, intentional, and worth building. Work for any product domain and any product stage.
|
|
11
|
+
|
|
12
|
+
Default output path: `docs/product-vision.md`.
|
|
13
|
+
|
|
14
|
+
## Workflow
|
|
15
|
+
|
|
16
|
+
### 1. Start with discovery, not drafting
|
|
17
|
+
|
|
18
|
+
Ask focused questions before writing the document unless the user has already provided enough source material.
|
|
19
|
+
|
|
20
|
+
Ask one question at a time. Wait for the user's answer before asking the next discovery question.
|
|
21
|
+
|
|
22
|
+
Prefer the fewest questions that can produce a useful document. Ask follow-ups only when an answer materially changes the document or when a critical input is missing.
|
|
23
|
+
|
|
24
|
+
Cover these areas over the course of the interview:
|
|
25
|
+
|
|
26
|
+
- **Product essence:** What is the product? What should it help people do, feel, or become?
|
|
27
|
+
- **Current context:** Is this a new concept, an active project, or an existing product?
|
|
28
|
+
- **Target user:** Who is it for? What is true about their life, work, habits, or desires?
|
|
29
|
+
- **Core problem or desire:** What pain, need, ambition, or emotional gap does the product address?
|
|
30
|
+
- **Emotional promise:** What should the ideal user reaction be?
|
|
31
|
+
- **Positioning:** What is this product compared against, and how should it feel different?
|
|
32
|
+
- **Product philosophy:** What principles should guide product decisions?
|
|
33
|
+
- **User control:** How much should users configure, decide, or manage?
|
|
34
|
+
- **Trust and quality:** What must the product be honest about? Where can it be imperfect?
|
|
35
|
+
- **Product voice:** How should the product sound? What language should it avoid?
|
|
36
|
+
- **Boundaries:** What should the product not become?
|
|
37
|
+
- **Success signal:** What behavior or outcome proves the product is working?
|
|
38
|
+
|
|
39
|
+
When helpful, ask for examples of products, experiences, media, brands, or moments the user wants the product to feel like or avoid.
|
|
40
|
+
|
|
41
|
+
### 2. Synthesize before structuring
|
|
42
|
+
|
|
43
|
+
Before drafting, infer the product's through-line:
|
|
44
|
+
|
|
45
|
+
- the central promise
|
|
46
|
+
- the main user tension
|
|
47
|
+
- the strongest differentiation
|
|
48
|
+
- the product's opinion about the world
|
|
49
|
+
- the decision-making principles that should survive future feature debates
|
|
50
|
+
|
|
51
|
+
If the user's answers conflict, resolve the conflict explicitly in the draft by choosing the clearest product direction. Do not preserve every idea equally.
|
|
52
|
+
|
|
53
|
+
### 3. Draft the product vision document
|
|
54
|
+
|
|
55
|
+
Write in Markdown. Use clear headings, short paragraphs, and bullets where they improve readability.
|
|
56
|
+
|
|
57
|
+
Recommended structure:
|
|
58
|
+
|
|
59
|
+
```markdown
|
|
60
|
+
# <Product Name> Product Vision
|
|
61
|
+
|
|
62
|
+
## Summary
|
|
63
|
+
|
|
64
|
+
## Product North Star
|
|
65
|
+
|
|
66
|
+
## Target User
|
|
67
|
+
|
|
68
|
+
## Product Positioning
|
|
69
|
+
|
|
70
|
+
## Product Philosophy
|
|
71
|
+
|
|
72
|
+
## User Control
|
|
73
|
+
|
|
74
|
+
## Trust and Quality
|
|
75
|
+
|
|
76
|
+
## Product Voice
|
|
77
|
+
|
|
78
|
+
## What <Product Name> Should Not Become
|
|
79
|
+
|
|
80
|
+
## Success Signal
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Adapt sections to the product. Add, rename, merge, or omit sections when useful.
|
|
84
|
+
|
|
85
|
+
### 4. Write in the right style
|
|
86
|
+
|
|
87
|
+
Aim for writing that is:
|
|
88
|
+
|
|
89
|
+
- human
|
|
90
|
+
- opinionated
|
|
91
|
+
- concrete
|
|
92
|
+
- concise
|
|
93
|
+
- emotionally clear
|
|
94
|
+
- useful for decision-making
|
|
95
|
+
- free of generic startup language
|
|
96
|
+
|
|
97
|
+
Avoid:
|
|
98
|
+
|
|
99
|
+
- corporate fluff
|
|
100
|
+
- vague claims like “seamless,” “innovative,” or “leveraging technology” unless grounded in specifics
|
|
101
|
+
- overexplaining
|
|
102
|
+
- feature lists masquerading as vision
|
|
103
|
+
- excessive frameworks
|
|
104
|
+
- pretending unresolved strategy questions are settled
|
|
105
|
+
|
|
106
|
+
Use the user's own language when it is vivid or revealing. Improve clarity without sanding off personality.
|
|
107
|
+
|
|
108
|
+
### 5. Handle incomplete inputs
|
|
109
|
+
|
|
110
|
+
If the user has only a rough idea, produce a sharper first-pass vision with clearly stated assumptions.
|
|
111
|
+
|
|
112
|
+
If the user has an existing product, make the document reflect what the product is today and what it must protect or change.
|
|
113
|
+
|
|
114
|
+
If there is not enough context to write responsibly, ask the smallest possible follow-up question set instead of inventing details.
|
|
115
|
+
|
|
116
|
+
### 6. Save the document
|
|
117
|
+
|
|
118
|
+
When working in a repository, write the product vision document to `docs/product-vision.md` by default. Create the `docs/` directory if needed.
|
|
119
|
+
|
|
120
|
+
If `docs/product-vision.md` already exists, read it before drafting. Treat the request as a revision when the user asks to revise, clarify, or update the product vision. Ask before overwriting an existing document when the user appears to be asking for a separate new product vision.
|
|
121
|
+
|
|
122
|
+
If the user explicitly requests a different path, use that path instead.
|
|
123
|
+
|
|
124
|
+
### 7. Final response behavior
|
|
125
|
+
|
|
126
|
+
After writing the file, briefly report the path that was created or updated. Include the full document in the response only if the user asks to review it inline.
|
|
127
|
+
|
|
128
|
+
If file writes are unavailable, provide the Markdown content and state that it is intended for `docs/product-vision.md`.
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: react
|
|
3
|
+
description: Use this skill when working on React components and component design.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# react
|
|
7
|
+
|
|
8
|
+
Use this skill when working on React components and component design.
|
|
9
|
+
|
|
10
|
+
This skill covers React componentization, component responsibility, state ownership, and presentation-vs-interaction boundaries.
|
|
11
|
+
|
|
12
|
+
## Use this skill for
|
|
13
|
+
|
|
14
|
+
- creating or editing React components
|
|
15
|
+
- splitting large components
|
|
16
|
+
- deciding where state should live
|
|
17
|
+
- separating presentational components from server-interacting or data-owning components
|
|
18
|
+
- reviewing component responsibility and prop design
|
|
19
|
+
|
|
20
|
+
## Core principles
|
|
21
|
+
|
|
22
|
+
### 1. Treat components like focused functions
|
|
23
|
+
- A component should have one clear reason to exist.
|
|
24
|
+
- If a component does too many unrelated things, split it.
|
|
25
|
+
- Prefer small components with clear names and explicit responsibilities.
|
|
26
|
+
- Do not split components just to create more files; split when it improves understanding.
|
|
27
|
+
|
|
28
|
+
### 2. Separate presentational components from data-owning components
|
|
29
|
+
- Presentational components should mostly render UI from props.
|
|
30
|
+
- Data-owning components may fetch, subscribe, mutate, or coordinate data.
|
|
31
|
+
- Keep it obvious which components interact with the server and which are purely presentational.
|
|
32
|
+
- Avoid hiding server interactions deep inside components that look presentational.
|
|
33
|
+
|
|
34
|
+
### 3. Keep props narrow and explicit
|
|
35
|
+
- Pass only what the child component needs.
|
|
36
|
+
- Prefer specific props over large loosely typed objects.
|
|
37
|
+
- Use prop names that describe component intent, not implementation details.
|
|
38
|
+
- Avoid prop drilling when it makes the component tree hard to understand; do not add context prematurely.
|
|
39
|
+
|
|
40
|
+
### 4. Keep render logic pure
|
|
41
|
+
- Rendering should depend on props, state, and context.
|
|
42
|
+
- Do not mutate external values during render.
|
|
43
|
+
- Keep side effects out of render logic.
|
|
44
|
+
- Calculate derived values during render when they are cheap and deterministic.
|
|
45
|
+
|
|
46
|
+
### 5. Put state at the right level
|
|
47
|
+
- Keep state local when only one component needs it.
|
|
48
|
+
- Lift state to the closest common parent when multiple components need to coordinate.
|
|
49
|
+
- Avoid duplicating derived state that can be computed from props or existing state.
|
|
50
|
+
- Prefer a single clear source of truth.
|
|
51
|
+
|
|
52
|
+
### 6. Isolate interactivity
|
|
53
|
+
- Keep interactive behavior close to the component that owns it.
|
|
54
|
+
- If only a small part of the UI needs interactivity, isolate that part instead of making a larger tree interactive.
|
|
55
|
+
- Separate event handling from presentation when doing so makes responsibility clearer.
|
|
56
|
+
|
|
57
|
+
### 7. Prefer composition over configuration-heavy components
|
|
58
|
+
- Compose smaller components instead of building one component with many modes and flags.
|
|
59
|
+
- If a component needs many boolean props, consider whether it is doing too much.
|
|
60
|
+
- Use `children` or named subcomponents when composition makes the API clearer.
|
|
61
|
+
|
|
62
|
+
### 8. Make component boundaries visible
|
|
63
|
+
- Name components by what they represent in the UI or product.
|
|
64
|
+
- Keep server-interacting, stateful, and presentational responsibilities easy to identify from the component shape.
|
|
65
|
+
- Avoid mixing data fetching, mutation, layout, formatting, and low-level UI rendering in one component.
|
|
66
|
+
|
|
67
|
+
## Decision rule
|
|
68
|
+
|
|
69
|
+
When unsure, prefer:
|
|
70
|
+
1. one clear responsibility per component
|
|
71
|
+
2. presentational components that render from props
|
|
72
|
+
3. data/server interaction in obvious owner components
|
|
73
|
+
4. local state unless coordination requires lifting it
|
|
74
|
+
5. composition over flag-heavy component APIs
|
|
75
|
+
6. no duplicated derived state
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: scrum-master-planner
|
|
3
|
+
description: Create pragmatic Epics and User Stories from an approved feature brief and technical design. Use when asked to plan delivery, create epics, write user stories, split a feature into backlog work, or turn a feature brief plus technical design under docs/features into Scrum planning artifacts.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Scrum Master Planner
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
Turn an approved feature brief and technical design into the smallest useful Scrum planning structure: Epics and User Stories that are clear enough for a team to implement and validate.
|
|
11
|
+
|
|
12
|
+
This skill owns delivery planning artifacts. It does not own product vision, feature definition, technical design, code implementation, or project-management tool automation.
|
|
13
|
+
|
|
14
|
+
## Required inputs
|
|
15
|
+
|
|
16
|
+
Before planning, read:
|
|
17
|
+
|
|
18
|
+
```txt
|
|
19
|
+
docs/features/<feature-slug>/feature_brief.md
|
|
20
|
+
docs/features/<feature-slug>/technical_design.md
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Also read `docs/product-vision.md` when it exists and the planning decision depends on product fit, scope boundaries, user value, or success signals.
|
|
24
|
+
|
|
25
|
+
## Hard start rule
|
|
26
|
+
|
|
27
|
+
Do not create Epics or User Stories if either the feature brief or technical design is missing.
|
|
28
|
+
|
|
29
|
+
If an input is missing:
|
|
30
|
+
|
|
31
|
+
1. Stop.
|
|
32
|
+
2. Say which file is missing.
|
|
33
|
+
3. Ask the user to create the missing artifact first.
|
|
34
|
+
4. Do not invent planning scope from partial context.
|
|
35
|
+
|
|
36
|
+
## Output locations
|
|
37
|
+
|
|
38
|
+
For a feature at:
|
|
39
|
+
|
|
40
|
+
```txt
|
|
41
|
+
docs/features/<feature-slug>/feature_brief.md
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
write Epics and User Stories under:
|
|
45
|
+
|
|
46
|
+
```txt
|
|
47
|
+
docs/features/<feature-slug>/epics/<epic-slug>/epic_brief.md
|
|
48
|
+
docs/features/<feature-slug>/epics/<epic-slug>/stories/<order>-<user-story-slug>.md
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Rules:
|
|
52
|
+
|
|
53
|
+
- Every User Story must belong to exactly one Epic.
|
|
54
|
+
- Never create orphan User Stories outside an Epic folder.
|
|
55
|
+
- Use kebab-case slugs for Epic folders and User Story filenames.
|
|
56
|
+
- Prefix every User Story filename with a two-digit execution order within its Epic, such as `01-`, `02-`, or `03-`.
|
|
57
|
+
- Use the same order number for User Stories that can be developed in parallel within the same Epic.
|
|
58
|
+
- Keep all artifacts for the feature under the same `docs/features/<feature-slug>/` tree.
|
|
59
|
+
|
|
60
|
+
## Planning rule
|
|
61
|
+
|
|
62
|
+
Create the smallest useful planning structure.
|
|
63
|
+
|
|
64
|
+
If one Epic with one User Story fully captures the work, create one Epic and one User Story. Add more Epics or User Stories only when there are meaningfully distinct outcomes, delivery slices, risks, dependencies, validation paths, or contributor ownership boundaries.
|
|
65
|
+
|
|
66
|
+
Avoid Agile theater. Do not create multiple Epics or Stories just because Scrum artifacts usually appear in groups.
|
|
67
|
+
|
|
68
|
+
## Workflow
|
|
69
|
+
|
|
70
|
+
### 1. Read source artifacts
|
|
71
|
+
|
|
72
|
+
Identify from the feature brief:
|
|
73
|
+
|
|
74
|
+
- user/customer problem
|
|
75
|
+
- MVP scope
|
|
76
|
+
- out-of-scope boundaries
|
|
77
|
+
- success signals
|
|
78
|
+
- business-level acceptance criteria
|
|
79
|
+
|
|
80
|
+
Identify from the technical design:
|
|
81
|
+
|
|
82
|
+
- implementation slices
|
|
83
|
+
- affected commands, files, modules, integrations, or docs
|
|
84
|
+
- validation expectations
|
|
85
|
+
- meaningful risks or unresolved decisions
|
|
86
|
+
|
|
87
|
+
### 2. Choose Epic boundaries
|
|
88
|
+
|
|
89
|
+
Create Epics around coherent delivery outcomes, not technical layers.
|
|
90
|
+
|
|
91
|
+
Good Epic boundaries include:
|
|
92
|
+
|
|
93
|
+
- a user-visible capability
|
|
94
|
+
- a complete CLI workflow
|
|
95
|
+
- a self-contained documentation or planning outcome
|
|
96
|
+
- a risk-reduction slice needed before broader work
|
|
97
|
+
- a contributor-owned chunk that can be reviewed independently
|
|
98
|
+
|
|
99
|
+
Avoid Epics that are only generic layers such as “frontend,” “backend,” “tests,” or “refactor” unless the source docs explicitly make that the delivery outcome.
|
|
100
|
+
|
|
101
|
+
### 3. Write each Epic brief
|
|
102
|
+
|
|
103
|
+
Each `epic_brief.md` should use this structure:
|
|
104
|
+
|
|
105
|
+
```md
|
|
106
|
+
# <Epic Name> Epic Brief
|
|
107
|
+
|
|
108
|
+
## Summary
|
|
109
|
+
<What outcome this Epic delivers and why it matters.>
|
|
110
|
+
|
|
111
|
+
## Source Context
|
|
112
|
+
- Feature brief: <relative path>
|
|
113
|
+
- Technical design: <relative path>
|
|
114
|
+
|
|
115
|
+
## Scope
|
|
116
|
+
- <What belongs in this Epic.>
|
|
117
|
+
|
|
118
|
+
## Out of Scope
|
|
119
|
+
- <What this Epic intentionally does not cover.>
|
|
120
|
+
|
|
121
|
+
## User Stories
|
|
122
|
+
- [<Story title>](./stories/<order>-<user-story-slug>.md)
|
|
123
|
+
|
|
124
|
+
## Acceptance Criteria
|
|
125
|
+
- <Epic-level criteria that prove the outcome is complete.>
|
|
126
|
+
|
|
127
|
+
## Dependencies / Risks
|
|
128
|
+
- <Only meaningful dependencies, risks, or sequencing notes.>
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
Adapt headings only when it improves clarity. Keep the Epic brief short.
|
|
132
|
+
|
|
133
|
+
### 4. Sequence and write User Stories
|
|
134
|
+
|
|
135
|
+
Within each Epic, decide the order of execution before writing User Story files. Use the lowest practical sequence number for the first story that should be implemented, then increment only when later stories depend on earlier work. If two or more stories can be developed at the same time, give them the same order number.
|
|
136
|
+
|
|
137
|
+
Each User Story should be independently understandable and should represent a reviewable slice of work.
|
|
138
|
+
|
|
139
|
+
Use this structure:
|
|
140
|
+
|
|
141
|
+
```md
|
|
142
|
+
# <User Story Title>
|
|
143
|
+
|
|
144
|
+
## Epic
|
|
145
|
+
[<Epic Name>](./epic_brief.md)
|
|
146
|
+
|
|
147
|
+
## User Story
|
|
148
|
+
As a <user or contributor>, I want <capability or outcome>, so that <value or reason>.
|
|
149
|
+
|
|
150
|
+
## Context
|
|
151
|
+
<Brief source-grounded context.>
|
|
152
|
+
|
|
153
|
+
## Scope
|
|
154
|
+
- <What this story includes.>
|
|
155
|
+
|
|
156
|
+
## Out of Scope
|
|
157
|
+
- <What this story excludes.>
|
|
158
|
+
|
|
159
|
+
## Acceptance Criteria
|
|
160
|
+
- <Observable, testable behavior or artifact.>
|
|
161
|
+
|
|
162
|
+
## Validation
|
|
163
|
+
- <Manual or automated checks from the technical design.>
|
|
164
|
+
|
|
165
|
+
## Notes
|
|
166
|
+
- <Optional implementation, sequencing, or risk notes. Omit if not useful.>
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
Keep Stories concrete, but do not turn them into implementation plans or task checklists. If detailed implementation guidance is needed, point to the technical design instead of restating it.
|
|
170
|
+
|
|
171
|
+
### 5. Check coverage and boundaries
|
|
172
|
+
|
|
173
|
+
Before finishing, verify:
|
|
174
|
+
|
|
175
|
+
- every MVP scope item from the feature brief is covered by at least one Epic or Story, or intentionally left out with a reason
|
|
176
|
+
- every Story belongs to exactly one Epic
|
|
177
|
+
- every Story filename includes a two-digit execution order prefix
|
|
178
|
+
- Stories with the same order number are actually parallelizable
|
|
179
|
+
- Story count is pragmatic, not inflated
|
|
180
|
+
- no Story adds scope that is absent from the feature brief or technical design
|
|
181
|
+
- acceptance criteria are testable enough for a reviewer
|
|
182
|
+
|
|
183
|
+
## Final response behavior
|
|
184
|
+
|
|
185
|
+
After writing files, briefly report:
|
|
186
|
+
|
|
187
|
+
- the Epic directories created or updated
|
|
188
|
+
- the number of Epics and User Stories
|
|
189
|
+
- any source-scope items intentionally left unresolved or captured as risks
|
|
190
|
+
|
|
191
|
+
Do not paste all generated artifacts unless the user asks to review them inline.
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: technical-design-writer
|
|
3
|
+
description: Use this skill to turn an approved feature brief into a concise, implementation-oriented technical design that delegates code-quality and architecture details to the relevant skills instead of restating them.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# technical-design-writer
|
|
7
|
+
|
|
8
|
+
Write the smallest useful technical design doc for an approved feature.
|
|
9
|
+
|
|
10
|
+
The doc should help a human say, “cool, I understand the implementation direction,” and help a later coding agent say, “nice, I know what to do next.” Avoid filler, generic engineering advice, and restating other skills.
|
|
11
|
+
|
|
12
|
+
## Grounding
|
|
13
|
+
|
|
14
|
+
Before writing, read:
|
|
15
|
+
|
|
16
|
+
1. `docs/product-vision.md`
|
|
17
|
+
2. the feature brief
|
|
18
|
+
3. `clean-code`
|
|
19
|
+
4. any selected architecture, language, or framework skills that apply
|
|
20
|
+
5. relevant existing repo files and flows
|
|
21
|
+
|
|
22
|
+
Apply those inputs. Do not summarize them back into the technical design unless a specific implication changes the implementation.
|
|
23
|
+
|
|
24
|
+
## Required input
|
|
25
|
+
|
|
26
|
+
Require a Markdown feature brief. If the user only has a vague idea, route to `feature-brief-writer` first.
|
|
27
|
+
|
|
28
|
+
If the feature has UI impact, use an existing UX artifact when available. If missing, note the UI uncertainty briefly instead of inventing UX.
|
|
29
|
+
|
|
30
|
+
## Design stance
|
|
31
|
+
|
|
32
|
+
Translate product intent into implementation direction.
|
|
33
|
+
|
|
34
|
+
Prefer:
|
|
35
|
+
|
|
36
|
+
- concise decisions over long explanation
|
|
37
|
+
- concrete file/module impact over abstract architecture language
|
|
38
|
+
- current codebase patterns over speculative redesigns
|
|
39
|
+
- explicit open questions over risky assumptions
|
|
40
|
+
- delegation to the right skills instead of duplicating their guidance
|
|
41
|
+
|
|
42
|
+
Avoid:
|
|
43
|
+
|
|
44
|
+
- restating clean-code, architecture, language, or framework principles
|
|
45
|
+
- product scope expansion
|
|
46
|
+
- user stories, tickets, or delivery plans
|
|
47
|
+
- invented CLI/database/API concepts that the feature brief did not ask for
|
|
48
|
+
- large template sections that say “none” without adding value
|
|
49
|
+
|
|
50
|
+
## Delegation rule
|
|
51
|
+
|
|
52
|
+
A technical design may name the skills that later implementation should use, but it should not repeat their contents.
|
|
53
|
+
|
|
54
|
+
Examples:
|
|
55
|
+
|
|
56
|
+
- Good: “Implementation should follow `command-pattern` for the new `sibu skills use` command slice.”
|
|
57
|
+
- Bad: restating the full command/handler/port responsibilities from the `command-pattern` skill.
|
|
58
|
+
- Good: “Use `clean-code` during implementation; no extra code-quality rules are introduced here.”
|
|
59
|
+
- Bad: adding a generic clean-code checklist to the doc.
|
|
60
|
+
|
|
61
|
+
## Workflow
|
|
62
|
+
|
|
63
|
+
1. Read the required grounding artifacts.
|
|
64
|
+
2. Inspect the relevant existing code before proposing changes.
|
|
65
|
+
3. Identify only the implementation decisions that matter.
|
|
66
|
+
4. Write the doc at `docs/features/<feature-slug>/technical_design.md`.
|
|
67
|
+
5. Keep it concise. Remove any section that does not help implementation.
|
|
68
|
+
|
|
69
|
+
## Output location
|
|
70
|
+
|
|
71
|
+
Always create or update:
|
|
72
|
+
|
|
73
|
+
```txt
|
|
74
|
+
docs/features/<feature-slug>/technical_design.md
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Use the same kebab-case feature slug as the feature brief.
|
|
78
|
+
|
|
79
|
+
## Output format
|
|
80
|
+
|
|
81
|
+
Use this structure as a starting point, not a contract. Delete sections that do not add value.
|
|
82
|
+
|
|
83
|
+
```md
|
|
84
|
+
# Technical Design: <Feature Name>
|
|
85
|
+
|
|
86
|
+
## Inputs
|
|
87
|
+
- Product vision: <path>
|
|
88
|
+
- Feature brief: <path>
|
|
89
|
+
- Delegated skills: <skills later implementation should apply>
|
|
90
|
+
|
|
91
|
+
## Summary
|
|
92
|
+
<2-4 sentences describing the implementation direction.>
|
|
93
|
+
|
|
94
|
+
## Existing Context
|
|
95
|
+
<Only the current files, commands, modules, state, templates, or integrations that materially affect the change.>
|
|
96
|
+
|
|
97
|
+
## Proposed Design
|
|
98
|
+
<Concrete implementation decisions. Include command flows, file/module impact, state changes, and integration boundaries when relevant.>
|
|
99
|
+
|
|
100
|
+
## Validation
|
|
101
|
+
<Focused test/build/manual checks.>
|
|
102
|
+
|
|
103
|
+
## Risks / Open Questions
|
|
104
|
+
- <Only unresolved decisions or meaningful risks.>
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## Quality bar
|
|
108
|
+
|
|
109
|
+
A good technical design is short, specific, and useful. It should not try to be the product brief, architecture skill, clean-code skill, implementation plan, or ticket backlog.
|