implement-github-feature
Scannednpx machina-cli add skill AgnosticUI/agnosticui/implement-github-feature --openclawUsage: /implement-github-feature ISSUE_NUMBER
Example: /implement-github-feature 281
Implement GitHub feature request $ARGUMENTS following AgnosticUI conventions, accessibility standards, and CSS-first principles.
Setup
- Read project context
- Read
.claude/PROJECT_CONTEXT.md - Understand:
- Repository structure
- Design principles
- Accessibility requirements
- Branch conventions
- Component workflows
- Read
Phase 0: Safety Checks (Required)
- Verify clean starting state
- Run
git status - Confirm:
- Working directory is clean
- Current branch is
master
- If either condition fails:
- STOP
- Ask the user to resolve before continuing
- Run
Phase 1: Branching
- Propose feature branch
- Follow convention:
issue-$ARGUMENTS/short-descriptive-name - Example:
issue-281/selection-card-group - Run:
git checkout -b issue-$ARGUMENTS/short-description - WAIT FOR USER APPROVAL of branch name before proceeding
- Follow convention:
Phase 2: Issue Analysis & Intent Extraction (No Code)
-
Analyze the GitHub issue
- Fetch full details:
gh issue view $ARGUMENTS - Extract and summarize:
- Feature goals
- Non-goals / constraints
- API expectations
- Accessibility requirements
- Styling and theming expectations
- Framework implications (Lit / React / Vue)
- Fetch full details:
-
Study existing related components
- Identify components this feature will compose or resemble
- Read their implementations in
v2/lib/src/components/ - Note patterns for:
- Props and attributes
- Slot usage
- CSS custom properties
::partexposure- Event dispatching
- Accessibility implementation
- This ensures consistency with established AgnosticUI conventions
-
Confirm feature classification
- This is a:
- Net-new component OR
- Major enhancement (not a bug fix)
- If scope appears ambiguous:
- Ask the user before proceeding
- This is a:
Phase 3: Design Proposal (Hard Stop Before Code)
-
Propose high-level design
- Identify:
- New components to be created
- Public vs internal APIs
- Required props vs optional props
- Slot usage and responsibilities
- Accessibility model (labels, roles, keyboard behavior)
- Shadow DOM strategy (
::part,::slotted)
- Explicitly call out:
- Web Component constraints
- CSS-first decisions
- What is intentionally not supported
- Identify:
-
Propose file & directory layout
- Core components:
v2/lib/src/components/...
- Documentation:
v2/site/docs/components/...
- Storybook playgrounds:
- Lit
- React
- Vue
- Examples:
- Lit / React / Vue test examples
- Core components:
-
WAIT FOR USER APPROVAL
- Do not create files
- Do not write code
- Proceed only after explicit approval of:
- API shape
- Accessibility approach
- Styling strategy
Phase 4: Scaffolding (Minimal, Intentional)
-
Create initial scaffolding
- Create component directories
- Add placeholder files where appropriate
- Add minimal README or doc stubs if needed
- No implementation logic yet
-
Show scaffolding diff
- Use
git diff - Explain what was created and why
- WAIT FOR USER APPROVAL
- Use
Phase 5: Core Implementation (Lit Web Components First)
-
Implement core component(s)
- Work only in:
v2/lib/src/components/
- Follow:
- CSS-first approach
- Design token usage
- Accessibility requirements
- Ensure:
- Keyboard interaction works
- Labels and semantics are correct
- Shadow DOM parts are intentional and minimal
- Work only in:
-
Verify build
- Run
npm run buildinv2/lib/ - Fix any compilation errors
- Run
npm run lintif available
- Run
-
Pause for review
- Explain:
- DOM structure
- Slot behavior
::partsurface- Accessibility decisions
- WAIT FOR USER APPROVAL before proceeding
- Explain:
Phase 6: Framework Integrations
-
Integrate with frameworks
- React playground
- Vue playground
- Lit playground
- APIs should feel idiomatic but map 1:1 conceptually
-
Add Storybook stories
- Demonstrate:
- Core use cases
- Variants
- Accessibility states
- Ensure consistency across frameworks
- Demonstrate:
Phase 7: Documentation & Examples
-
Write documentation
- Add VitePress docs:
- API
- Slots vs props
- Styling guidance
- Accessibility notes
- Update or add playbooks if applicable
- Add VitePress docs:
-
Update examples
- Verify examples compile and behave correctly
- Keep examples minimal and educational
Phase 8: Final Review & Commit
-
Final verification
- Review:
git diff- Accessibility behavior
- Styling hooks
- API consistency
- Ensure no accidental breaking changes
- Review:
-
Prepare commit
- Stage changes:
git add . - Commit message format:
Add #$ARGUMENTS: [concise feature description] - Show commit contents
- WAIT FOR USER APPROVAL before committing
- Stage changes:
Phase 9: Handoff
- Explain next steps
- User is on branch:
issue-$ARGUMENTS/... - Review with:
git diff master - Push when ready:
git push -u origin issue-$ARGUMENTS/... - Create PR:
gh pr create --base master --head issue-$ARGUMENTS/...
- User is on branch:
Important Rules
- NEVER work directly on
master - NEVER push without explicit user permission
- ALWAYS stop at design gates
- ALWAYS prioritize accessibility over convenience
- Prefer slots for layout, props for semantics
- CSS custom properties > ::part > ::slotted
- Do not assume intent — if unclear, ask
Source
git clone https://github.com/AgnosticUI/agnosticui/blob/master/.claude/skills/implement-github-feature/SKILL.mdView on GitHub Overview
Guided process to design and implement a net-new feature or component based on a GitHub issue. It emphasizes AgnosticUI conventions, accessibility, and CSS-first design, and follows a phased workflow from setup through scaffolding and core implementation.
How This Skill Works
Begin by reading project context from .claude/PROJECT_CONTEXT.md and analyze the GitHub issue with gh issue view to extract goals, constraints, APIs, and accessibility requirements. Propose a feature branch named after the issue, wait for explicit approval, then proceed through scaffolding before tackling core implementation, ensuring alignment with Phase 0–5 steps.
When to Use It
- You need to implement a net-new feature or component based on a GitHub issue (not a bug fix).
- You must adhere to AgnosticUI conventions, accessibility requirements, and CSS-first principles.
- You want a structured, phase-gated workflow with explicit approvals before coding.
- You are working on Lit/Web Components (v2) and need a formal design and scaffolding process.
- You want to document API shape, accessibility approach, and file layout before writing code.
Quick Start
- Step 1: Read the GitHub issue with gh issue view and review the project context in .claude/PROJECT_CONTEXT.md
- Step 2: Propose a feature branch like: git checkout -b issue-281/short-descriptive-name and await approval
- Step 3: Create scaffolding (directories and placeholder files), document decisions, and show a diff for approval before coding
Best Practices
- Read the issue in full with gh issue view to capture goals, non-goals, constraints, and accessibility requirements.
- Follow the branch convention: issue-<NUMBER>/short-descriptive-name and await user approval before proceeding.
- Verify a clean starting state (git status shows clean working tree and master branch) per Phase 0.
- Draft a high-level design proposal (API shape, props, slots, accessibility) and wait for explicit approval before coding.
- Create minimal scaffolding first, show a diff with git diff, and obtain approval before implementing core logic.
Example Use Cases
- Implementing a new select-dropdown or option list component as a net-new feature in v2
- Adding an accessible modal dialog component following CSS-first and ARIA practices
- Creating a multi-step wizard component with proper focus management
- Introducing a feature-flag or toggler component with API surface defined up-front
- Building a data table component with sorting and keyboard navigation