beyond-the-prompt/skills/README.md
Scott Scoble d2da71e53a Initial commit: Beyond the Prompt workshop presentation by Scott Scoble
- Reveal.js presentation on Skills and Subagents pattern
- Nix flake with Caddy-based HTTP server and process-compose orchestration
- ADRs documenting architectural decisions
- Skills for AI implementation guidance
- Full Scott Scoble author attribution in README
2026-05-23 18:19:14 -07:00

197 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Skills Directory
This directory contains Claude Code skills that provide AI implementation guidance for this project.
## Purpose: AI Context
**Skills are for AI, not humans.** They encode HOW to implement architectural decisions with step-by-step procedures, templates, and validation scripts. Claude Code automatically loads skill metadata and selects relevant skills based on the task.
**For human-readable architectural rationale**, see the `/docs/adr` directory.
## Available Skills
### 1. nix-http-server
**Description**: Create HTTP servers for Nix flake projects. NEVER suggest Python dependencies.
**Use when**: Serving static files, creating dev servers, running multi-service environments.
**Key constraints**:
- All dependencies from nixpkgs only
- Use Caddy, never Python http.server
- Generate configs at runtime for dev flexibility
- Use process-compose for orchestration
**Corresponds to**: ADR 002 (Nix Flake Architecture)
### 2. revealjs-presentation
**Description**: Create and style Reveal.js presentations for technical talks. Optimized for large screens.
**Use when**: Building slide decks, HTML-based presentations, technical talks.
**Key patterns**:
- CDN-hosted Reveal.js (no build process)
- Large screen optimization (38px base font for 100" @ 15ft)
- Custom theme system with CSS variables
- Code highlighting with language-specific classes
**Corresponds to**: ADR 001 (Presentation Technology Choice)
### 3. adr-documentation
**Description**: Create and maintain Architecture Decision Records for human documentation.
**Use when**: Documenting architectural decisions, explaining WHY to team members.
**Key patterns**:
- ADRs are for humans, skills are for AI
- Document rationale and alternatives
- Preserve historical context
- Immutable once accepted (create superseding ADR instead)
**Corresponds to**: ADR 003 (Demo Implementation Strategy)
## How Skills Work
### Progressive Disclosure
Skills use a three-tier loading system:
1. **Metadata** (~100 tokens/skill, always loaded)
- Name and description for discovery
- Claude scans all skills at session start
2. **Instructions** (<5k tokens, loaded when triggered)
- Full SKILL.md content
- Only loaded for relevant skills
3. **Resources** (unlimited, on-demand)
- Scripts, templates, reference files
- Accessed via filesystem when needed
### Context Efficiency
**Traditional approach** (loading ADRs):
```
3 ADRs × 1,500 tokens = 4,500 tokens
Doesn't scale beyond ~10-20 documents
```
**Skills approach**:
```
3 skills × 100 tokens metadata = 300 tokens
+ ~2 triggered skills × 5k instructions = 10,300 tokens total
Scales to 100s of skills
```
## The Skills + ADRs Pattern
```
Architectural Decision
↓
┌────┴────┐
▼ ▼
ADR Skill
(Human) (AI)
↓ ↓
Explains Implements
WHY HOW
```
### Integration Example
**ADR 002**: "Use Caddy for HTTP serving, not Python"
- Location: `docs/adr/002-nix-flake-architecture.md`
- Audience: Human developers
- Purpose: Explain WHY (dependency management, nixpkgs-only)
**Skill**: `nix-http-server`
- Location: `skills/nix-http-server/SKILL.md`
- Audience: Claude AI
- Purpose: Enforce HOW (never suggest Python, use Caddy)
## Creating New Skills
### When to Create a Skill
After writing an ADR, create a skill if:
- [ ] Decision involves repetitive implementation patterns
- [ ] AI should automatically enforce constraints
- [ ] Pattern can be automated with templates/scripts
- [ ] You want perfect consistency
### Skill Structure
```
skills/
└── my-skill/
├── SKILL.md # Required: metadata + instructions
├── scripts/ # Optional: executable scripts
│ └── validate.sh
└── templates/ # Optional: code templates
└── example.template
```
### SKILL.md Format
```markdown
---
name: skill-identifier
description: When to use this skill (max 1024 chars). Be specific about triggers.
---
# Skill Name
## When to Use
Be specific about what triggers this skill.
## Implementation Pattern
Step-by-step procedures, examples, templates.
## Anti-Patterns (DO NOT DO)
What NOT to do, with examples.
## Related Documentation
Link to corresponding ADR for human context.
```
### Best Practices
✅ **Do**:
- Write clear descriptions that help Claude select the skill
- Provide concrete examples and templates
- Document anti-patterns explicitly
- Keep instructions under 5k tokens
- Link to corresponding ADR
❌ **Don't**:
- Duplicate WHY explanations (that's in ADRs)
- Write overly generic descriptions
- Include unnecessary context in metadata
- Exceed 5k tokens for instructions
## Skill Discovery
Claude Code automatically:
1. Scans `skills/*/SKILL.md` at session start
2. Loads metadata (100 tokens per skill)
3. Selects relevant skills based on task
4. Loads full instructions only for selected skills
5. Accesses resources on-demand via filesystem
**You don't need to manually invoke skills** - Claude does it automatically based on task recognition.
## Examples
See existing skills in this directory:
- `nix-http-server/SKILL.md`
- `revealjs-presentation/SKILL.md`
- `adr-documentation/SKILL.md`
## Resources
- Anthropic Skills Documentation: https://docs.claude.com/en/docs/agents-and-tools/agent-skills
- Skills Repository: https://github.com/anthropics/skills
- This project's ADRs: `docs/adr/`