Implement a playbook from its PROMPT specification files. Supports both single-framework (PROMPT-REACT.md, etc.) and 3-framework (PROMPT-3-FRAMEWORKS.md) modes.
Scanned 5/30/2026
Install via CLI
openskills install gabrielmoreira/agent-skills-mirror---
name: implement-ag-playbook
description: Implement a playbook from its PROMPT specification files. Supports both single-framework (PROMPT-REACT.md, etc.) and 3-framework (PROMPT-3-FRAMEWORKS.md) modes.
disable-model-invocation: false
allowed-tools: Read, Grep, Glob, Edit, Write, Bash(npm *), Bash(npx *), Bash(ls *), Bash(cp *), Bash(mkdir *), Bash(git status), Bash(git diff *), Bash(git log *), Bash(git add *), Bash(git commit *)
---
**Usage:** `/implement-ag-playbook PLAYBOOK_NAME [MODE]`
**Examples:**
- `/implement-ag-playbook onboarding` - Implement all available prompts
- `/implement-ag-playbook login 3-frameworks` - Implement only PROMPT-3-FRAMEWORKS.md
- `/implement-ag-playbook login react` - Implement only PROMPT-REACT.md
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., `logo.svg` vs `logo-3-frameworks.svg`)
---
## Phase 0: Validation
1. **Verify playbook exists**
- Check `v2/playbooks/$ARGUMENTS/` exists
- List available PROMPT files:
- `PROMPT-3-FRAMEWORKS.md`
- `PROMPT-REACT.md`
- `PROMPT-VUE.md`
- `PROMPT-LIT.md`
- If MODE specified, verify that PROMPT file exists
- If no MODE specified, ask user which to implement
2. **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
---
## Phase 1: Project Scaffolding
3. **Create Vite project(s)**
- Navigate to `v2/playbooks/$ARGUMENTS/`
- Create appropriate project(s):
**For 3-frameworks mode:**
```bash
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-ts
```
**For single-framework mode:**
```bash
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
```
4. **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`
5. **Initialize AgnosticUI CLI**
- For each project:
```bash
npx agnosticui-cli init --framework [react|vue|lit] --skip-prompts
npx agnosticui-cli add [COMPONENTS from prompt]
```
---
## Phase 2: Configuration
6. **Copy design assets (if applicable)**
- Check `design/` folder for assets beyond mockups
- **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 `public/` folder
- Follow asset instructions in the PROMPT file
7. **Vue vite.config.ts**
- Add custom element recognition for `ag-*` tags:
```typescript
vue({
template: {
compilerOptions: {
isCustomElement: (tag) => tag.startsWith('ag-'),
},
},
})
```
8. **Token imports**
- Import in each project's entry point:
```typescript
import './components/ag/styles/ag-tokens.css'
import './components/ag/styles/ag-tokens-dark.css'
```
9. **Font setup**
- Add Google Fonts link to each `index.html` per PROMPT specification
10. **TypeScript configuration (Vue)**
- If CLI-generated code causes errors, relax `tsconfig.app.json`:
```json
"strict": false,
"noUnusedLocals": false,
"noUnusedParameters": false
```
---
## Phase 3: Implementation
11. **Implement each framework**
- Follow the PROMPT specification exactly
- **React:** `src/App.tsx` using React wrappers + lucide-react
- **Vue:** `src/App.vue` using Vue wrappers + lucide-vue-next
- **Lit:** Custom element using core components + inline SVG icons
12. **Verify builds**
- Run `npm run build` in each project
- Fix any TypeScript or build errors
- Test with `npm run dev`
---
## Phase 4: Verification
13. **Visual verification**
- Run each example
- Compare against design mockups in `design/`
- Check responsive breakpoints
- Verify component interactions
14. **Cross-framework consistency**
- All implementations should behave identically
- State management works correctly
- Styling matches across frameworks
---
## Phase 5: Commit
15. **Stage and commit**
- Show `git diff --stat`
- Commit with descriptive message
- **WAIT FOR USER APPROVAL**
---
## 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 `selection-change` events
- Event detail: `{ value, checked, selectedValues }`
---
## Common Issues & Fixes
| Issue | Fix |
|-------|-----|
| Vue `ag-*` warnings | Add `isCustomElement` to vite.config.ts |
| TypeScript strict errors | Relax `tsconfig.app.json` settings |
| Missing dark mode | Import both `ag-tokens.css` AND `ag-tokens-dark.css` |
| Button `isDisabled` prop | Use `disabled` not `isDisabled` |
| Timeline connector misalignment | Ensure core component has `::slotted(*) { box-sizing: border-box }` |
---
## Incomplete Playbook Warning
If a playbook is missing PROMPT files, notify the user:
> **Warning:** The `$ARGUMENTS` playbook is incomplete.
>
> **Present:** [list files]
> **Missing:** [list files]
>
> Complete playbooks should have:
> - `PROMPT-3-FRAMEWORKS.md` → `react-example/`, `vue-example/`, `lit-example/`
> - `PROMPT-REACT.md` → `react/`
> - `PROMPT-VUE.md` → `vue/`
> - `PROMPT-LIT.md` → `lit/`
>
> Would you like to:
> 1. Implement only the available prompts
> 2. Generate the missing PROMPT files first
---
No comments yet. Be the first to comment!