devlyn-cli 0.0.7 → 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/CLAUDE.md +13 -2
- package/README.md +10 -6
- package/bin/devlyn.js +17 -0
- package/config/commands/{devlyn.ui.md → devlyn.design-ui.md} +5 -0
- package/config/commands/devlyn.implement-ui.md +466 -0
- package/config/commands/devlyn.team-resolve.md +307 -0
- package/config/commands/devlyn.team-review.md +310 -0
- package/config/skills/code-review-standards/SKILL.md +71 -0
- package/config/skills/root-cause-analysis/SKILL.md +70 -0
- package/config/skills/ui-implementation-standards/SKILL.md +74 -0
- package/package.json +1 -1
- package/config/skills/feature-gap-analysis/SKILL.md +0 -111
- package/config/skills/investigate/SKILL.md +0 -71
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Root Cause Analysis
|
|
2
|
+
|
|
3
|
+
Standard methodology for investigating bugs, issues, and unexpected behavior. Apply this framework whenever diagnosing a problem.
|
|
4
|
+
|
|
5
|
+
## Trigger
|
|
6
|
+
|
|
7
|
+
- User reports a bug or unexpected behavior
|
|
8
|
+
- Error logs or stack traces need diagnosis
|
|
9
|
+
- "Why does X happen?" or "What's causing X?" questions
|
|
10
|
+
- Debugging sessions
|
|
11
|
+
- Any use of `/devlyn.resolve` or `/devlyn.team-resolve`
|
|
12
|
+
|
|
13
|
+
## 5 Whys Protocol
|
|
14
|
+
|
|
15
|
+
For every issue, trace from symptom to root cause:
|
|
16
|
+
|
|
17
|
+
**Why 1**: Why did [symptom] happen?
|
|
18
|
+
→ Because [cause 1]. Evidence: [file:line]
|
|
19
|
+
|
|
20
|
+
**Why 2**: Why did [cause 1] happen?
|
|
21
|
+
→ Because [cause 2]. Evidence: [file:line]
|
|
22
|
+
|
|
23
|
+
**Why 3**: Why did [cause 2] happen?
|
|
24
|
+
→ Because [cause 3]. Evidence: [file:line]
|
|
25
|
+
|
|
26
|
+
Continue until you reach something **actionable** — a code change that prevents the entire chain.
|
|
27
|
+
|
|
28
|
+
### Stop Criteria
|
|
29
|
+
- You've reached a design decision or architectural choice that caused the issue
|
|
30
|
+
- You've found a missing validation, wrong assumption, or incorrect logic
|
|
31
|
+
- Further "whys" leave the codebase (external dependency, infrastructure)
|
|
32
|
+
|
|
33
|
+
**NEVER stop at "the code does X"** — always ask WHY the code does X.
|
|
34
|
+
|
|
35
|
+
## Evidence Standards
|
|
36
|
+
|
|
37
|
+
Every claim MUST reference a specific `file:line`. No speculation about code you haven't read.
|
|
38
|
+
|
|
39
|
+
1. Read the actual code before forming hypotheses
|
|
40
|
+
2. Trace the execution path: entry → intermediate calls → issue location
|
|
41
|
+
3. Check git blame for when/why the problematic code was introduced
|
|
42
|
+
4. Find related tests that cover (or miss) the affected area
|
|
43
|
+
5. Generate 2-3 hypotheses, each with supporting evidence
|
|
44
|
+
|
|
45
|
+
## No-Workaround Rule
|
|
46
|
+
|
|
47
|
+
Every fix MUST address the root cause. Stop immediately if you catch yourself:
|
|
48
|
+
|
|
49
|
+
- Adding `|| defaultValue` to mask null/undefined
|
|
50
|
+
- Adding `try/catch` that swallows errors silently
|
|
51
|
+
- Using `?.` to skip over null when null IS the bug
|
|
52
|
+
- Hard-coding a value for the specific failing case
|
|
53
|
+
- Adding a "just in case" check that shouldn't be needed
|
|
54
|
+
- Suppressing warnings/errors instead of fixing them
|
|
55
|
+
- Adding retry logic instead of fixing why it fails
|
|
56
|
+
|
|
57
|
+
If the real fix requires significant refactoring, present the scope to the user — never ship a workaround "for now".
|
|
58
|
+
|
|
59
|
+
## Test-Driven Validation
|
|
60
|
+
|
|
61
|
+
1. Write a failing test that reproduces the issue
|
|
62
|
+
2. Implement the fix
|
|
63
|
+
3. Run the test — if it still fails, **revert completely** and try the next hypothesis
|
|
64
|
+
4. Never layer fixes on top of failed attempts
|
|
65
|
+
5. Run the full test suite for regressions
|
|
66
|
+
|
|
67
|
+
## Routing
|
|
68
|
+
|
|
69
|
+
- **Simple issue** (single file, obvious cause): Use `/devlyn.resolve`
|
|
70
|
+
- **Complex issue** (multi-module, unclear cause, security implications): Use `/devlyn.team-resolve` for multi-perspective investigation
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# UI Implementation Standards
|
|
2
|
+
|
|
3
|
+
Quality framework for building and improving UI from design systems. Apply these standards whenever implementing or modifying visual components.
|
|
4
|
+
|
|
5
|
+
## Trigger
|
|
6
|
+
|
|
7
|
+
- Building UI components or pages
|
|
8
|
+
- Implementing designs from a design system
|
|
9
|
+
- Improving or refactoring existing UI
|
|
10
|
+
- Any use of `/devlyn.implement-ui`, `/devlyn.design-ui`, or `/devlyn.design-system`
|
|
11
|
+
- Frontend development tasks involving visual design
|
|
12
|
+
|
|
13
|
+
## Design System Fidelity
|
|
14
|
+
|
|
15
|
+
When a design system exists at `docs/design-system.md`:
|
|
16
|
+
|
|
17
|
+
- **Always use design tokens** — never hardcode color, spacing, typography, shadow, or motion values
|
|
18
|
+
- **Match component patterns exactly** — structure, variants, hover/interactive states as defined
|
|
19
|
+
- **Apply interactive states** — use exact easing, duration, and transform values from the design system
|
|
20
|
+
- **Preserve design character** — maintain the theme, shape language, density, and energy defined in the system
|
|
21
|
+
|
|
22
|
+
If a value isn't in the design system, derive it from existing tokens (e.g., a new spacing value should follow the spacing scale pattern).
|
|
23
|
+
|
|
24
|
+
## Accessibility (Non-Negotiable)
|
|
25
|
+
|
|
26
|
+
Every UI component must meet WCAG 2.1 AA:
|
|
27
|
+
|
|
28
|
+
- **Semantic HTML first**: Use `nav`, `main`, `section`, `article`, `button`, `a` — not `div` for everything
|
|
29
|
+
- **Color contrast**: Text on backgrounds must meet 4.5:1 (normal text) or 3:1 (large text). If design tokens fail contrast, adjust while staying close to design intent
|
|
30
|
+
- **Keyboard navigation**: All interactive elements reachable and operable via keyboard. Logical focus order. Visible focus indicators
|
|
31
|
+
- **Screen readers**: Meaningful alt text, ARIA labels for icon-only buttons, aria-live for dynamic content, heading hierarchy (h1→h2→h3, no skipping)
|
|
32
|
+
- **Reduced motion**: Wrap all animations in `prefers-reduced-motion` media query. Decorative animations → remove. Functional animations → simplify to opacity-only
|
|
33
|
+
- **Touch targets**: Minimum 44x44px for all interactive elements on touch devices
|
|
34
|
+
|
|
35
|
+
## UI State Coverage
|
|
36
|
+
|
|
37
|
+
Every interactive component or data-dependent view needs all states:
|
|
38
|
+
|
|
39
|
+
| State | What to show | Common pattern |
|
|
40
|
+
|-------|-------------|----------------|
|
|
41
|
+
| Loading | Skeleton screens or contextual spinner | Skeleton preferred over spinner |
|
|
42
|
+
| Empty | Illustration + descriptive message + CTA | Guide user to populate |
|
|
43
|
+
| Error | Inline error with retry action | Never dead-end the user |
|
|
44
|
+
| Success | Confirmation feedback | Toast, inline message, or redirect |
|
|
45
|
+
| Disabled | Visually muted, cursor not-allowed | Explain why if possible |
|
|
46
|
+
|
|
47
|
+
## Animation Quality
|
|
48
|
+
|
|
49
|
+
- **Page load**: Orchestrated staggered reveals — vary `animation-delay` by 0.05-0.1s increments
|
|
50
|
+
- **Scroll**: `IntersectionObserver` for scroll-triggered reveals (threshold 0.1)
|
|
51
|
+
- **Hover**: Transform + shadow transitions, not just color. Use design system easing
|
|
52
|
+
- **Transitions**: Custom `cubic-bezier` from design system, never default `ease` or `linear`
|
|
53
|
+
- **Restraint**: One dramatic animation sequence beats many small ones. If everything moves, nothing stands out
|
|
54
|
+
|
|
55
|
+
## Responsive Strategy (Web)
|
|
56
|
+
|
|
57
|
+
- **Mobile-first**: Write base styles for mobile, override at larger breakpoints
|
|
58
|
+
- **Fluid where possible**: Use `clamp()` for typography and spacing that scales smoothly
|
|
59
|
+
- **Layout shifts**: Define how grids, navigation, and cards adapt at each breakpoint
|
|
60
|
+
- **Touch adaptation**: Larger tap targets, adequate spacing, no hover-dependent interactions on mobile
|
|
61
|
+
|
|
62
|
+
## Code Quality
|
|
63
|
+
|
|
64
|
+
- Follow the project's existing patterns and conventions
|
|
65
|
+
- Components should be composable and reusable
|
|
66
|
+
- No inline styles — use the token/theme system
|
|
67
|
+
- Server components where possible (Next.js), client components only for interactivity
|
|
68
|
+
- Keep component files focused — one component per file
|
|
69
|
+
|
|
70
|
+
## Routing
|
|
71
|
+
|
|
72
|
+
- **Build new UI or improve existing**: Use `/devlyn.implement-ui` for a full team approach
|
|
73
|
+
- **Add features to existing UI**: Use `/devlyn.team-resolve` with the feature description
|
|
74
|
+
- **Review UI code quality**: Use `/devlyn.team-review` for multi-perspective code review
|
package/package.json
CHANGED
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
# Feature Gap Analysis Skill
|
|
2
|
-
|
|
3
|
-
Use this skill to systematically identify missing features and functionality gaps in the codebase.
|
|
4
|
-
|
|
5
|
-
## Trigger
|
|
6
|
-
|
|
7
|
-
- "What features are missing?"
|
|
8
|
-
- "Analyze gaps in [feature area]"
|
|
9
|
-
- Feature comparison requests
|
|
10
|
-
- "What should we build next?"
|
|
11
|
-
|
|
12
|
-
## Workflow
|
|
13
|
-
|
|
14
|
-
### Phase 1: Define Scope
|
|
15
|
-
1. Identify the feature area to analyze
|
|
16
|
-
2. Establish comparison baseline (competitor, spec, user needs)
|
|
17
|
-
3. Define what "complete" means for this analysis
|
|
18
|
-
|
|
19
|
-
### Phase 2: Parallel Analysis
|
|
20
|
-
Spawn Task agents to investigate simultaneously:
|
|
21
|
-
|
|
22
|
-
```markdown
|
|
23
|
-
Agent 1: Current State Analysis
|
|
24
|
-
- What exists today?
|
|
25
|
-
- How is it implemented?
|
|
26
|
-
- What are its limitations?
|
|
27
|
-
|
|
28
|
-
Agent 2: Standard/Competitor Analysis
|
|
29
|
-
- What do similar products offer?
|
|
30
|
-
- What's the industry standard?
|
|
31
|
-
- What do users expect?
|
|
32
|
-
|
|
33
|
-
Agent 3: User-Facing Gaps
|
|
34
|
-
- What's missing from user perspective?
|
|
35
|
-
- What are common complaints/requests?
|
|
36
|
-
- What workflows are incomplete?
|
|
37
|
-
|
|
38
|
-
Agent 4: Technical Debt
|
|
39
|
-
- What technical limitations block features?
|
|
40
|
-
- What refactoring would enable new capabilities?
|
|
41
|
-
- What dependencies are outdated?
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
### Phase 3: Synthesize Findings
|
|
45
|
-
Compile findings into prioritized analysis:
|
|
46
|
-
|
|
47
|
-
```markdown
|
|
48
|
-
## Feature Gap Analysis: [Area]
|
|
49
|
-
|
|
50
|
-
### Current State
|
|
51
|
-
| Feature | Status | Implementation | Notes |
|
|
52
|
-
|---------|--------|----------------|-------|
|
|
53
|
-
| Feature A | Complete | `path/to/file.ts` | |
|
|
54
|
-
| Feature B | Partial | `path/to/file.ts` | Missing X |
|
|
55
|
-
| Feature C | Missing | - | Needed for Y |
|
|
56
|
-
|
|
57
|
-
### Gap Prioritization
|
|
58
|
-
|
|
59
|
-
#### High Priority (User Impact + Feasibility)
|
|
60
|
-
1. **[Gap]**
|
|
61
|
-
- Impact: [Why it matters]
|
|
62
|
-
- Complexity: S/M/L
|
|
63
|
-
- Dependencies: [What's needed first]
|
|
64
|
-
- Suggested approach: [Brief technical direction]
|
|
65
|
-
|
|
66
|
-
#### Medium Priority
|
|
67
|
-
2. **[Gap]**
|
|
68
|
-
- ...
|
|
69
|
-
|
|
70
|
-
#### Low Priority / Nice-to-Have
|
|
71
|
-
3. **[Gap]**
|
|
72
|
-
- ...
|
|
73
|
-
|
|
74
|
-
### Technical Debt Blocking Progress
|
|
75
|
-
- [ ] Debt item 1 - blocks [features]
|
|
76
|
-
- [ ] Debt item 2 - blocks [features]
|
|
77
|
-
|
|
78
|
-
### Recommended Roadmap
|
|
79
|
-
1. Phase 1: [Quick wins]
|
|
80
|
-
2. Phase 2: [Core features]
|
|
81
|
-
3. Phase 3: [Advanced features]
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
### Phase 4: Generate Implementation Plans
|
|
85
|
-
For top priority gaps, draft initial implementation plans:
|
|
86
|
-
|
|
87
|
-
```markdown
|
|
88
|
-
## Implementation Plan: [Top Gap]
|
|
89
|
-
|
|
90
|
-
### Files to Create/Modify
|
|
91
|
-
- `new/file.ts` - [purpose]
|
|
92
|
-
- `existing/file.ts` - [changes needed]
|
|
93
|
-
|
|
94
|
-
### Key Decisions Needed
|
|
95
|
-
- Decision 1: Option A vs Option B
|
|
96
|
-
- Decision 2: ...
|
|
97
|
-
|
|
98
|
-
### Draft Implementation Steps
|
|
99
|
-
1. Step 1
|
|
100
|
-
2. Step 2
|
|
101
|
-
3. ...
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
## Rules
|
|
105
|
-
|
|
106
|
-
- ALWAYS output prioritized, actionable findings
|
|
107
|
-
- Include complexity estimates (S/M/L) for each gap
|
|
108
|
-
- Provide file:line references to existing implementations
|
|
109
|
-
- Don't just list gaps - provide implementation direction
|
|
110
|
-
- Use TodoWrite to checkpoint analysis progress
|
|
111
|
-
- If interrupted, output whatever analysis exists so far
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
# Investigation Skill
|
|
2
|
-
|
|
3
|
-
Use this skill for code investigation, feature gap analysis, or understanding existing functionality.
|
|
4
|
-
|
|
5
|
-
## Trigger
|
|
6
|
-
|
|
7
|
-
- User asks to investigate, analyze, or understand code
|
|
8
|
-
- Feature gap analysis requests
|
|
9
|
-
- "How does X work?" questions
|
|
10
|
-
- Code exploration tasks
|
|
11
|
-
|
|
12
|
-
## Workflow
|
|
13
|
-
|
|
14
|
-
### Phase 1: Define Scope
|
|
15
|
-
Before starting, clarify:
|
|
16
|
-
- What specific question needs answering?
|
|
17
|
-
- What does "complete" look like for this investigation?
|
|
18
|
-
- Are there time constraints?
|
|
19
|
-
|
|
20
|
-
### Phase 2: Parallel Exploration
|
|
21
|
-
Spawn Task agents to explore different areas simultaneously:
|
|
22
|
-
```
|
|
23
|
-
Use Task tool to spawn parallel agents:
|
|
24
|
-
1. Agent for data layer analysis
|
|
25
|
-
2. Agent for API/service layer
|
|
26
|
-
3. Agent for UI/component layer
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
### Phase 3: Checkpoint Progress
|
|
30
|
-
Every significant finding, use TodoWrite to record:
|
|
31
|
-
- Files examined
|
|
32
|
-
- Patterns discovered
|
|
33
|
-
- Questions raised
|
|
34
|
-
- Hypotheses formed
|
|
35
|
-
|
|
36
|
-
### Phase 4: Synthesize & Report
|
|
37
|
-
ALWAYS output a structured summary before ending:
|
|
38
|
-
|
|
39
|
-
```markdown
|
|
40
|
-
## Investigation Summary: [Topic]
|
|
41
|
-
|
|
42
|
-
### Files Examined
|
|
43
|
-
- `path/to/file.ts` - [what it does]
|
|
44
|
-
- `path/to/other.ts` - [what it does]
|
|
45
|
-
|
|
46
|
-
### Key Findings
|
|
47
|
-
1. [Finding with file:line reference]
|
|
48
|
-
2. [Finding with file:line reference]
|
|
49
|
-
|
|
50
|
-
### Architecture/Flow
|
|
51
|
-
[Brief description or diagram of how components interact]
|
|
52
|
-
|
|
53
|
-
### Gaps/Issues Identified
|
|
54
|
-
- [ ] Gap 1
|
|
55
|
-
- [ ] Gap 2
|
|
56
|
-
|
|
57
|
-
### Remaining Unknowns
|
|
58
|
-
- Question that needs more investigation
|
|
59
|
-
|
|
60
|
-
### Recommended Next Steps
|
|
61
|
-
1. Actionable step
|
|
62
|
-
2. Actionable step
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
## Rules
|
|
66
|
-
|
|
67
|
-
- NEVER end mid-investigation without a summary
|
|
68
|
-
- ALWAYS provide file:line references for findings
|
|
69
|
-
- Use TodoWrite to checkpoint progress every 5-10 minutes
|
|
70
|
-
- If interrupted, output whatever findings exist so far
|
|
71
|
-
- Prefer parallel Task agents for large codebases
|