Agnosticui implement-ag-playbook
Implement a playbook from its PROMPT specification files. Supports both single-framework (PROMPT-REACT.md, etc.) and 3-framework (PROMPT-3-FRAMEWORKS.md) modes.
git clone https://github.com/AgnosticUI/agnosticui
T=$(mktemp -d) && git clone --depth=1 https://github.com/AgnosticUI/agnosticui "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.claude/skills/implement-ag-playbook" ~/.claude/skills/agnosticui-agnosticui-implement-ag-playbook && rm -rf "$T"
.claude/skills/implement-ag-playbook/SKILL.mdUsage:
/implement-ag-playbook PLAYBOOK_NAME [MODE]
Examples:
- Implement all available prompts/implement-ag-playbook onboarding
- Implement only PROMPT-3-FRAMEWORKS.md/implement-ag-playbook login 3-frameworks
- Implement only PROMPT-REACT.md/implement-ag-playbook login react
Implement the specified playbook based on its existing PROMPT specification files.
Playbook Structure Reference
Complete playbooks have this structure (see
v2/playbooks/README.md):
v2/playbooks/[name]/ ├── PROMPT-3-FRAMEWORKS.md # Builds → react-example/, vue-example/, lit-example/ ├── PROMPT-REACT.md # Builds → react/ ├── PROMPT-VUE.md # Builds → vue/ ├── PROMPT-LIT.md # Builds → lit/ └── design/ # Shared assets (mockups, icons, images)
Single-Framework vs 3-Frameworks differences:
- Different fonts (e.g., Playfair Display vs Merriweather)
- Different social icons (e.g., Apple vs Facebook)
- Different asset filenames (e.g.,
vslogo.svg
)logo-3-frameworks.svg
Phase 0: Validation
-
Verify playbook exists
- Check
existsv2/playbooks/$ARGUMENTS/ - List available PROMPT files:
PROMPT-3-FRAMEWORKS.mdPROMPT-REACT.mdPROMPT-VUE.mdPROMPT-LIT.md
- If MODE specified, verify that PROMPT file exists
- If no MODE specified, ask user which to implement
- Check
-
Read the prompt specification
- Read the target PROMPT file(s)
- Extract:
- Required components (for
)agnosticui-cli add - Design specifications
- Font requirements
- Asset copying instructions
- Framework-specific configurations
- Required components (for
Phase 1: Project Scaffolding
-
Create Vite project(s)
- Navigate to
v2/playbooks/$ARGUMENTS/ - Create appropriate project(s):
For 3-frameworks mode:
npm create vite@latest react-example -- --template react-ts npm create vite@latest vue-example -- --template vue-ts npm create vite@latest lit-example -- --template lit-tsFor single-framework mode:
npm create vite@latest react -- --template react-ts # PROMPT-REACT.md npm create vite@latest vue -- --template vue-ts # PROMPT-VUE.md npm create vite@latest lit -- --template lit-ts # PROMPT-LIT.md - Navigate to
-
Install dependencies
- React:
npm install && npm install lucide-react lit - Vue:
npm install && npm install lucide-vue-next lit - Lit:
npm install && npm install lit
- React:
-
Initialize AgnosticUI CLI
- For each project:
npx agnosticui-cli init --framework [react|vue|lit] --skip-prompts npx agnosticui-cli add [COMPONENTS from prompt]
Phase 2: Configuration
-
Copy design assets (if applicable)
- Check
folder for assets beyond mockupsdesign/ - Not all playbooks have assets to copy - some only have mockups (e.g.,
)onboarding - If assets exist (icons, logos, background images), copy to each project's
folderpublic/ - Follow asset instructions in the PROMPT file
- Check
-
Vue vite.config.ts
- Add custom element recognition for
tags:ag-*
vue({ template: { compilerOptions: { isCustomElement: (tag) => tag.startsWith('ag-'), }, }, }) - Add custom element recognition for
-
Token imports
- Import in each project's entry point:
import './components/ag/styles/ag-tokens.css' import './components/ag/styles/ag-tokens-dark.css' -
Font setup
- Add Google Fonts link to each
per PROMPT specificationindex.html
- Add Google Fonts link to each
-
TypeScript configuration (Vue)
- If CLI-generated code causes errors, relax
:tsconfig.app.json
"strict": false, "noUnusedLocals": false, "noUnusedParameters": false - If CLI-generated code causes errors, relax
Phase 3: Implementation
-
Implement each framework
- Follow the PROMPT specification exactly
- React:
using React wrappers + lucide-reactsrc/App.tsx - Vue:
using Vue wrappers + lucide-vue-nextsrc/App.vue - Lit: Custom element using core components + inline SVG icons
-
Verify builds
- Run
in each projectnpm run build - Fix any TypeScript or build errors
- Test with
npm run dev
- Run
Phase 4: Verification
-
Visual verification
- Run each example
- Compare against design mockups in
design/ - Check responsive breakpoints
- Verify component interactions
-
Cross-framework consistency
- All implementations should behave identically
- State management works correctly
- Styling matches across frameworks
Phase 5: Commit
- Stage and commit
- Show
git diff --stat - Commit with descriptive message
- WAIT FOR USER APPROVAL
- Show
Key Patterns
Icon Imports
- React:
import { Icon } from "lucide-react" - Vue:
import { Icon } from "lucide-vue-next" - Lit: Inline SVG templates (lucide doesn't work directly)
Component Imports
- React:
./components/ag/[Component]/react/ - Vue:
./components/ag/[Component]/vue/ - Lit:
./components/ag/[Component]/core/
Event Handling
- Selection components emit
eventsselection-change - Event detail:
{ value, checked, selectedValues }
Common Issues & Fixes
| Issue | Fix |
|---|---|
Vue warnings | Add to vite.config.ts |
| TypeScript strict errors | Relax settings |
| Missing dark mode | Import both AND |
Button prop | Use not |
| Timeline connector misalignment | Ensure core component has |
Incomplete Playbook Warning
If a playbook is missing PROMPT files, notify the user:
Warning: The
playbook is incomplete.$ARGUMENTSPresent: [list files] Missing: [list files]
Complete playbooks should have:
→PROMPT-3-FRAMEWORKS.md,react-example/,vue-example/lit-example/ →PROMPT-REACT.mdreact/ →PROMPT-VUE.mdvue/ →PROMPT-LIT.mdlit/Would you like to:
- Implement only the available prompts
- Generate the missing PROMPT files first