Create effective, reusable skills from real-world experience for promotion to Master Alex
Create effective, reusable skills from real-world experience
Meta-skill for heirs to build high-quality skills that can be promoted to Master Alex.
Never create skills from theory. Wait for:
| ✅ Ready Signal | ❌ Too Early |
|---|---|
| Project shipped/deployed | Still designing |
| Bug discovered and fixed | Theoretical solution |
| Pattern used 3+ times | First attempt |
| Gotcha encountered | Guessing at edge cases |
A skill written after successful delivery is worth 10x one written from theory.
Answer these questions first:
Scope Check:
| Scope | Symptom | Action |
|---|---|---|
| Too broad | "Everything about X" | Split into multiple skills |
| Too narrow | Only one use case | Merge into related skill |
| Just right | Clear boundaries, multiple uses | Proceed |
Folder Structure:
.github/skills/{skill-name}/
├── SKILL.md # Required: Main content
├── synapses.json # Optional: Brain connections
└── {assets} # Optional: Templates, CSS, scripts
Naming Convention:
| Pattern | Examples |
|---|---|
{domain}-{sub} | azure-architecture-patterns, api-design |
{tool}-{purpose} | markdown-mermaid, sharp-cli |
{action}-{context} | debugging-patterns, error-recovery |
---
applyTo: "{glob-patterns}"
---
# {Skill Name}
> {One-line description — what + who}
{2-3 sentence intro with context}
---
## When to Use
- {Primary use case}
- {Secondary use case}
- {Edge case that surprised you}
---
## Quick Reference
{Most important info — tables, cheat sheets, one-liners}
---
## {Module 1: Core Concept}
{Main content organized by topic}
### {Sub-section}
{Details, patterns, examples}
---
## {Module N: Advanced}
{Progressive disclosure — basics first, advanced later}
---
## Troubleshooting
### {Problem Title}
**Problem**: {What goes wrong}
**Solution**: {How to fix it}
**Why**: {Root cause for learning}
---
## Activation Patterns
| Trigger | Response |
|---------|----------|
| "{keyword}" | Full skill activation |
| "{partial keyword}" | {Specific module} |
---
*Skill created: {date} | Category: {category} | Status: Active*
---
## applyTo Patterns
Choose patterns that match when this skill should activate:
| Pattern | When to Use | Example Skills |
|---------|-------------|----------------|
| `**/*.{ext}` | File-type specific | `typescript-patterns` |
| `**/*{keyword}*` | Name-based activation | `markdown-mermaid` |
| `**/test*` | Context-based | `testing-strategies` |
| `src/**` | Location-based | `frontend-patterns` |
**Common Combinations:**
```yaml
# Documentation skills
applyTo: "**/*.md,**/readme*,**/docs/**"
# TypeScript skills
applyTo: "**/*.ts,**/*.tsx,**/tsconfig*"
# Azure skills
applyTo: "**/azure*,**/bicep*,**/arm*,**/*.bicep"
# Broad activation (use sparingly)
applyTo: "**/*"
| Connection Type | When | Example |
|---|---|---|
| Enables | This skill makes another possible | slide-design → dissertation-defense |
| Enhances | This skill improves another | coaching → executive-storytelling |
| Requires | This skill depends on another | citation → literature-review |
| Extends | This skill adds to another | airs-appropriate-reliance → appropriate-reliance |
| Strength | Meaning | Use When |
|---|---|---|
| Critical (0.95-1.0) | Always co-activate | Core dependencies |
| High (0.8-0.94) | Usually co-activate | Strong relationships |
| Medium (0.6-0.79) | Sometimes co-activate | Contextual connections |
| Low (0.4-0.59) | Rarely co-activate | Weak associations |
| Direction | Meaning | Symbol |
|---|---|---|
| Forward | I help them | → |
| Bidirectional | Mutual benefit | ↔ |
| Backward | They help me | ← |
Format:
- [.github/skills/{skill}/SKILL.md] (High, Enables, Bidirectional) - "When X happens"
Before promoting to Master, verify:
Calculate before requesting Master promotion:
| Criterion | Points | Your Score |
|---|---|---|
| Has applyTo frontmatter | +2 | |
| Has Synapses section | +3 | |
| Has Troubleshooting | +2 | |
| Has code examples | +2 | |
| Content > 100 lines | +1 | |
| Content > 200 lines | +2 | |
| Uses generic terms (not project-specific) | +1-3 | |
| Has Activation Patterns | +1 | |
| Total | /16 |
Promotion thresholds:
The biggest failure mode in skill creation is the capabilities-list anti-pattern — a skill that reads like a product brochure instead of encoding real knowledge.
# ❌ SHALLOW — adds zero value
Expert in domain-agnostic knowledge acquisition.
## Capabilities
- Guide conversational knowledge acquisition
- Create skill files
- Build expertise through progressive questioning
## When to Use
- User wants to learn something new
- Teaching Alex about a domain
Why this fails: An LLM already knows how to "guide conversational learning" generically. The skill adds nothing the model didn't already have. It's a capability label, not capability knowledge.
# ✅ DEEP — encodes specific, actionable knowledge
## Phase 2: Foundation — Nail the core concepts
- Ask for the simplest possible explanation of each concept
- Demand concrete examples, not abstractions
- Test understanding by explaining it back
- **Red flag**: If the explanation uses jargon from the same domain, you haven't bottomed out
**Exit criteria**: Can explain core concepts without jargon.
| Signal | Shallow | Deep |
|---|---|---|
| Opening line | "Expert in X" / "Capabilities:" | Specific insight or principle |
| Tables | Category labels only | Real data: thresholds, trade-offs, examples |
| Sections | "When to Use" / "Input/Output" | Domain-specific knowledge modules |
| Advice | Generic ("be careful") | Specific ("timeout after 30s because...") |
| Examples | None or abstract | Concrete, copy-pasteable, with context |
| Anti-patterns | Not mentioned | Named, explained, with alternatives |
For each section, ask: "Would an LLM produce something equally useful without this skill?"
A trifecta = SKILL.md (declarative) + .instructions.md (procedural) + .prompt.md (interactive). Not every skill needs one.
| Signal | Needs Trifecta? | Why |
|---|---|---|
| Skill describes a multi-step workflow | Yes | Steps need procedural memory (.instructions.md) |
| Users need guided conversation | Yes | Interactive workflow needs episodic memory (.prompt.md) |
| Skill is reference knowledge only | No | Table lookups don't need procedures |
| Process is already covered by another trifecta | No | Avoid duplication |
| Skill is used frequently + is error-prone | Yes | High value from step-by-step guidance |
| Skill is domain expertise (patterns, anti-patterns) | No | SKILL.md alone is the right memory type |
| Component | Memory Type | Contains | Example |
|---|---|---|---|
| SKILL.md | Declarative ("what") | Domain knowledge, tables, thresholds, patterns | testing-strategies: pyramid, mock rules, coverage philosophy |
| .instructions.md | Procedural ("how") | Step-by-step process, decision points, checkpoints | release-management: version bump → changelog → build → publish |
| .prompt.md | Episodic ("interact") | Guided conversation, user Q&A, session templates | /learn: Socratic learning flow |
Rule: If the skill's value is in its reference data (tables, thresholds, patterns), a SKILL.md alone is correct. Only add procedures/prompts when there's a genuine process to guide.
A muscle is an execution script in .github/muscles/ — the motor cortex of the architecture. Scripts, not memory.
| Signal | Create Muscle? | Example |
|---|---|---|
| Same terminal commands run repeatedly | Yes | brain-qa.ps1 — synapse validation |
| File validation that could be automated | Yes | validate-skills.ps1 — schema checking |
| Multi-file transformations | Yes | sync-architecture.cjs — heir sync |
| Decision-making that requires judgment | No | Code review (that's a skill, not a script) |
| Creative work | No | Writing (LLM does this, not a script) |
| One-time operation | No | Not worth automating |
| Pattern | Example | What It Does |
|---|---|---|
{verb}-{noun}.ps1 | validate-synapses.ps1 | PowerShell validation |
{verb}-{noun}.js | sync-architecture.cjs | Node.js transformation |
{noun}-{noun}.ps1 | brain-qa.ps1 | PowerShell audit |
A muscle is referenced by a trifecta but is never a memory component itself:
SKILL.md → "What to check" (knowledge)
.instructions.md → "Step 5: Run brain-qa.ps1" (procedure)
.prompt.md → "Shall I run the health check?" (interaction)
brain-qa.ps1 → Actually runs the check (execution)
Every memory file declares how it syncs from Master Alex to heir projects. Default is inheritable (syncs automatically). Each file type uses its native format:
| File Type | Mechanism | Where |
|---|---|---|
| Skills | Central exclusion map | SKILL_EXCLUSIONS in sync-architecture.cjs |
| Instructions | YAML frontmatter | inheritance: master-only in the .instructions.md file |
| Prompts | YAML frontmatter | inheritance: master-only in the .prompt.md file |
| Muscles | JSON sidecar | .github/muscles/inheritance.json |
| Config | Hardcoded array | EXCLUDED_CONFIG_FILES in sync-architecture.cjs |
| Type | Behavior | When to Use |
|---|---|---|
inheritable | Syncs to all heirs (default) | Most files — no declaration needed |
master-only | Stays in Master Alex | Release tooling, master audits, promotion workflows |
heir:vscode | Heir maintains own version | Skills where heir has diverged |
heir:m365 | Targets M365 heir only | M365/Teams-specific content |
When a skill is non-inheritable, its trifecta siblings must have matching frontmatter:
# In the .instructions.md and .prompt.md files:
---