CCW · Lesson 3 · Internal review · not participant-facing
L3 Live Session Plan
Skills, Rules & MCPs
Full build plan for the July 16 live session: teaching map, timing, demo scripts, 30-slide deck, sources. Status: v2 — Giuseppe's Jul 14 feedback applied, awaiting final OK.
Live: Wed Jul 16
Content: 75 min + Q&A 12 min
Slides: 30
Demo blocks: 6 (~44 min)
Cohort: Essedi · 8 seats · IT/EN
Rev: v2 · 14 Jul
v2 changes (Giuseppe's feedback, Jul 14): rule-file creation + CLAUDE.md linking now shown explicitly (new slide 06, Demo 1 expanded) · concrete when-a-script example added · tier-3 example is now /chiudi-installazione calling the L2 skills · new skill-vs-hook comparison slide (17) · models and effort both demoed live · "rapid-fire" renamed to toolbox (cassetta degli attrezzi) · new section 4 with the ranked skip-to-L4 cut list · all six demos rewritten step-by-step with verbatim prompts · every demo slide now carries its numbered steps as a take-home runbook · demo project proposed: the L2 Essedi asset generator (decision 4).
1 · What L3 teaches
A Rules
Constraints Claude loads automatically: project rules, global rules, scoped rules (paths:). Why rules live outside CLAUDE.md (keep it lean, each rule at home). Mechanics shown on screen, not just described: create the file (.claude/rules/nome-regola.md, frontmatter with paths:, plain-language body) and the two ways it gets loaded — scoped rules load themselves when a matching file is touched; always-on rules are linked from CLAUDE.md with one @.claude/rules/nome-regola.md import line. The self-audit habit: a fresh session reviews your CLAUDE.md because the author cannot self-audit. The silent-failure warning: a misconfigured rule fails with zero warnings, so verify, don't trust. (Exact frontmatter key and import syntax re-verified on the current CLI version during demo-asset build.)
B The global layer (~/.claude)
Taught from zero live (cut from the prework preview). Global CLAUDE.md, settings.json, global skills. The placement decision: applies to every project → global; applies to this work → project. Anchor: they have used it unknowingly since Week 2, grill-me lives there.
C Skills that grow into workflows + scripts + early hook
The 3 tiers from the prework: plain instructions → instructions plus a script (fixed code, exact every run, zero AI tokens) → scripts plus supporting files and templates. When does a step earn a script? The litmus test: if doing it twice must produce identical results and any variation is a bug (date-stamped filenames, moving a file to archive, a VAT calculation), it's a script; if two good versions could legitimately differ (drafting the report text), it stays with Claude. Canonical example told live: the rule says "save as weekly-status-YYYY-MM-DD.md and archive the old one" — Claude gets it right 9 times out of 10, the 10th it writes report-14-luglio.md or forgets the archive; that step becomes a 3-line script that cannot get it wrong, never gets tired, costs zero tokens. Build a tier-2 skill live from a real repeated workflow. Tier-3 composition made concrete: /chiudi-installazione — one skill that calls /case-study, /post-linkedin and /testo-sito from the L2 demo, so "skills calling skills" lands on assets they already saw built. Then the early hook as the natural next rung, with the distinction made explicit: a skill is a playbook YOU invoke and can skip; a hook is a guardrail the SYSTEM fires on every event, whether or not anyone remembers. "The rule that keeps failing becomes a hook."
D MCPs + the mother project
Files are read, tools are used: MCP is the connector. One live connection (calendar, to confirm). The friction-twice decision gate so nobody over-installs. The agentic map: a central project whose docs other projects reference, the thing that makes the two-layer architecture personal.
E Operational literacy — the toolbox (la cassetta degli attrezzi)
Formerly labelled "rapid-fire", which confused even us: it just means four short back-to-back micro-demos, ~3 minutes each — breadth, not depth. Renamed everywhere to "toolbox". Contents: models and effort (which brain for which task + how long it thinks; switch live with /model, set the default in settings.json). Context window, /compact, usage monitoring. Git as part of the build loop. Live Server. Testing teaser: "prove it works", full method in L4.
· Close: the compounding loop
Error → rule → skill → hook. Every correction made once. The system improves every week.
2 · Session timing
| Block | Time | Cumulative |
| Show & tell + map of today | 10 min | 0:10 |
| Rules (Demo 1) | 10 min | 0:20 |
| Global layer (Demo 2) | 8 min | 0:28 |
| Skills + scripts (Demo 3) | 15 min | 0:43 |
| Early hook (Demo 4) | 4 min | 0:47 |
| MCP (Demo 5) | 8 min | 0:55 |
| Mother project / agentic map | 4 min | 0:59 |
| Toolbox (Demo 6, 4 micro-demos) | 12 min | 1:11 |
| Testing teaser + loop + close | 4 min | 1:15 |
| Q&A | 12 min | 1:27 |
Buffer strategy (L3 is the highest cognitive-load week): see section 4 for the full ranked cut list — up to ~13 min recoverable without touching the four non-negotiable demos.
3 · The six demo blocks
Demo project (all six demos): the L2 Essedi marketing asset generator (sessions/lesson-2-build-a-feature/demo/). One project across L2→L3 makes the compounding story literal — the friction they watched in L2 becomes the rules and skills of L3. See open decision 4. Every step below states the exact prompt typed; these same steps appear on the demo's companion slide.
DEMO 1 · 10' Self-audit → create a rule file → link it → silent failure
Setup: the L2 asset-generator project with a pre-baked bloated CLAUDE.md (1 stale instruction, 1 repeated-mistake candidate — the output-file naming) + a pre-baked broken rule file using globs: instead of paths:.
- 0–1': open the project, fresh session. Frame: "this project has been worked in for two weeks — like yours."
- 1–3': type: "Leggi il CLAUDE.md di questo progetto. Cosa è obsoleto, cosa manca, cosa dovrebbe diventare una regola?" — Claude flags the stale instruction and the repeated naming mistake.
- 3–5': create the rule file on screen: "Crea un rule file .claude/rules/naming-asset.md scoped sui file di output" — open the generated file, walk the three parts: path,
paths: frontmatter, plain-language body. Point: a rule is just a markdown file in the right place.
- 5–6': show the two ways it loads: scoped rule fires by itself when a matching file is touched (prove it: ask for an asset, watch the rule respected). For an always-on rule, add ONE line to CLAUDE.md:
@.claude/rules/stile-essedi.md — "CLAUDE.md is the index, rules are the chapters."
- 6–8': the silent failure: swap in the pre-baked
globs: file, same request → rule ignored, zero warnings. Fix the one line to paths: → same request now respects it. "La config sbagliata non urla."
- 8–10': "quale regola vale per TUTTI i tuoi progetti?" → "mai lavorare direttamente su main" → it can't live in this project → bridge to Demo 2.
ProofThe fresh session flags what the author missed (implementer cannot self-audit); the rule file is created, linked and seen firing on screen; one config line flips behavior with no error (misconfiguration is silent).
DEMO 2 · 5' The global layer tour
Setup: the two-root VS Code workspace from pre-L2 (~/.claude already in their sidebar).
- 0–2': open global CLAUDE.md ("who I am, how I work — true in every project") → settings.json, point at the
model default line ("remember this line — it pays off in the toolbox block") → ~/.claude/skills/ where grill-me already lives.
- 2–4': run
/grill-me in the asset generator, then in a second project.
- 4–5': placement question to the room: "regola di stile Essedi — global o project?" (project). "Mai su main?" (global).
ProofThe same skill fires in two projects: "you have used the global layer since Week 2 without knowing."
DEMO 3 · 10' Build a tier-2 skill with a script (centerpiece)
Setup: weekly-status workflow on the asset generator (read the installation briefs + generated assets → draft the weekly summary for the commercial team → save as weekly-status-YYYY-MM-DD.md → archive the previous one). 2–3 briefs pre-seeded. The archive/filename step is the fragile part.
- 0–2': do it manually once, narrating the pain: "Leggi i brief delle installazioni e gli asset generati, scrivi il riepilogo settimanale, salvalo come weekly-status-2026-07-16.md e sposta il vecchio in archive/" — "third Friday in a row I type this."
- 2–5': type: "Trasforma questo in una skill /weekly-status. La stesura del riepilogo può essere flessibile; il nome file con la data e lo spostamento in archivio devono essere identici ogni volta — usa uno script per quella parte."
- 5–7': read the generated SKILL.md + scripts/archive.sh aloud. Key line: you didn't write code — you said which step had to be exact.
- 7–9': fresh run:
/weekly-status. Watch the two natures: Claude drafts (judgment, narrated), the script archives (instant, identical, zero tokens).
- 9–10': tier-3 shown, not just named: open the pre-built
/chiudi-installazione — one skill whose steps are "run /case-study, run /post-linkedin, run /testo-sito" on a finished installation. Skills calling skills, on the exact assets they saw built in L2.
ProofParticipants see the two natures in one run: narrated model steps vs. an instant deterministic script step — and composition on skills they already know. Fallback: pre-built skill on a branch.
DEMO 4 · 4' Skill vs hook: playbook vs guardrail
Framing (slide 17 table shown first): a skill is a playbook — you invoke it, it can be skipped, it does work. A hook is a guardrail — the system fires it on every event, nobody has to remember it, it prevents mistakes. Setup: the global "never commit to main" rule from Demo 1 + a prepared branch-guard hook.
- 0–2': ask Claude to commit to main. The written rule might stop it — show that it can slip (rules are advisory text).
- 2–4': install the hook, same request: blocked, visibly, every time. "Nobody remembered anything — the system did."
ProofRule text is advisory, the hook makes the action physically impossible. Slide line: "la regola che continua a fallire diventa un hook."
DEMO 5 · 8' MCP connected live + decision gate
Recommended MCP: Google Calendar (to confirm; universal for operators, visually obvious payoff).
- 0–1': collect 2–3 answers to the prework priming questions ("cosa collegheresti al tuo progetto?").
- 1–3': connect the calendar MCP on screen (the actual connect flow, not pre-done — they need to see it's minutes, not a project).
- 3–5': type: "Cosa ho in calendario questa settimana? Prepara il mio briefing del lunedì usando i task aperti del progetto più gli impegni reali."
- 5–8': decision-gate round: each participant names their friction-twice tool, apply the gate together out loud. Most get "not yet" — correct outcome.
ProofThe answer contains real events that exist in no project file: Claude reached a tool, not a file. Most participants get "not yet" from the gate, proving it is a filter, not a pitch.
DEMO 6 · 12' The toolbox — 4 micro-demos, ~3' each, breadth not depth
- Models & effort (3') — type
/model, pick Haiku, ask something trivial (note the speed), switch back. Show the effort setting in the same picker: model = which brain, effort = how long it thinks before answering (low = fast and cheap, high = slower and more careful). Then the payoff of Demo 2: the default lives in settings.json — change it once, every session starts there. (Exact picker UI re-verified at rehearsal on the current CLI version.)
- Context + compact + usage (4') — watch the context indicator fill →
/compact → ask about an early detail: gone from the chat, alive in todo.md (closes the loop with L1's memory-loss demo). 1' on the usage page: where the credits go, why model choice matters.
- Git (2') — type: "Committa la fase 1 con un messaggio chiaro" → Claude runs git → show the commit on GitHub. Every closed phase = a restore point.
- Live Server (2') — install the VS Code extension, edit the HTML mockup, browser updates live.
ProofModel switch: same question, visibly different speed. Compact: files are the real memory, the window is not. Git: version control happens inside the loop, no commands memorized.
4 · If we run late — the ranked cut list
What can be skipped and pushed to L4 (or async) without breaking the lesson's contract. Cut in this order; check the clock at 0:43 (end of Demo 3) and 0:55 (end of Demo 5).
| Order | Cut | Saves | Where it lands | What's lost |
| 1 | Live Server | 2 min | 3-line tip in the follow-up email | Nothing conceptual — pure convenience tool |
| 2 | Usage monitoring minute | 1 min | Screenshot + caption in the follow-up email | Nothing — it's a "where to click" |
| 3 | Git micro-demo | 2 min | L4 — pairs naturally with shipping the capstone | Nothing permanent, L4 owns it anyway |
| 4 | Mother project / agentic map | 3 min | 1-min pointer now, full treatment opens L4 (capstone context) | The "personal architecture" moment — recoverable in L4 |
| 5 | Demo 4 live hook | 3 min | Concept survives via slides 16–17 (skill-vs-hook table stays) | The "blocked live" proof — weakest acceptable loss |
Never cut: Demo 1 (rules), Demo 2 (global layer), Demo 3 (tier-2 skill build), Demo 5 (MCP) — they ARE the take-home list on slide 29. Total recoverable: ~11–13 min, more than one full overrun.
5 · The deck, slide by slide (30)
Demo companion pattern (v2): every demo-tagged slide now carries the demo's numbered steps + the exact prompt in a pill — shown for ~20 seconds before switching to the terminal ("ecco cosa sto per fare"), left visible as reference, and doubling as the take-home runbook so participants can re-run every demo at home. No separate step-slides needed; the demo slide IS the runbook.
Apertura · 3 slides
01
Title
Skills, Rules & MCPs · "Smetti di ripeterti." · CCW L3 · 16 luglio
02
Show & tell
Question pill: "Cosa si è rotto? Cosa hai rifatto due volte?" 3 participants share.
03
Mappa di oggi
5 blocks: Regole → Livello globale → Skills che crescono → Collegare i tool → La cassetta degli attrezzi
Sezione A · Regole · 5 slides
04demo 1a
Self-audit
Chi scrive non può auto-verificarsi. Steps 1–2 of Demo 1 + the exact prompt pill. Fresh session reads YOUR CLAUDE.md; what it finds becomes the first rule.
05
Rule files
Vincoli che si caricano da soli: project / global / scoped (paths:). CLAUDE.md stays lean.
06demo 1bnew v2
Crea e collega una regola
The mechanics, annotated on screen: (1) il file — .claude/rules/nome.md; (2) lo scope — frontmatter paths:; (3) il collegamento — one @.claude/rules/nome.md line in CLAUDE.md for always-on rules, self-loading for scoped ones. "CLAUDE.md è l'indice, le regole sono i capitoli."
07demo 1c
Silent failure
La config sbagliata non urla: wrong key → ignored, 0 warnings; 1 line fixed → rule fires. Verify, don't trust.
08
La regola di tutti i progetti
Bridge: "mai lavorare direttamente su main" applies everywhere. So where does it live? There is a layer above the project.
Sezione B · Il livello globale · 2 slides
09demo 2
Tour di ~/.claude
Steps + prompt pill. You have used it for two weeks: global CLAUDE.md · settings.json · grill-me lives HERE, runs in every project.
10
Cosa va dove
Every project? → global. This work only? → project. Who you are / default permissions / universal vs project skills.
Sezione C · Skills che crescono · 8 slides
11
I 3 gradini (dal pre-work)
T1 istruzioni · T2 + script · T3 + script e file di supporto. Power only when the task earns it.
12
Script: cervello e mani
The litmus test: fatto due volte deve venire IDENTICO → script (nomi file con data, archiviazione, calcolo IVA). Due versioni buone possono differire → Claude. Example: 9 volte su 10 il nome è giusto, la decima è "report-14-luglio.md" — quel passo diventa script. You don't write code: you say which step must be exact.
13demo 3
Costruiamo la skill
Il report del venerdì, per sempre. All 5 steps + the verbatim transform-prompt pill. The fragile step goes to the script. /weekly-status live.
14
Anatomia di una tier-2
SKILL.md (instructions) + scripts/archive.sh (the exact step). L2's three habits can become gates inside the skill.
15
Tier 3: composizione
Concrete: /chiudi-installazione chiama /case-study + /post-linkedin + /testo-sito — one command, three assets, on the L2 project they know. Skills calling skills, now formalized.
16
Hook: un passo oltre
Script: code your skill calls. Hook: code that fires by itself, every time, with nobody remembering to call it.
17new v2
Skill vs Hook
Comparison table: Chi la attiva (tu / il sistema) · Quando (quando la chiami / a ogni evento) · Si può saltare? (sì / mai) · Serve per (fare un lavoro / impedire un errore). Analogy: skill = la procedura del pit-stop, hook = il limitatore di giri.
18demo 4
Regola vs hook
Steps + prompt pill. The written rule can slip. Commit to main → the hook blocks it. "La regola che continua a fallire diventa un hook."
Sezione D · Collegare i tool · 4 slides
19
MCP
Un file si legge. Un tool si usa. MCP = the plug that connects Claude to calendar, email, database.
20demo 5
Calendario collegato
Steps + prompt pill ("prepara il mio lunedì"). Il briefing del lunedì, dal vivo: connect flow shown live → tasks + real events.
21
Il gate: attrito ×2
Exercise pill: "quale tool ti ha fatto perdere tempo DUE volte?" Verdict together: yes / not yet. Most: not yet. Correct.
22
Il progetto madre
A central project the others consult: status, decisions, todos. How the global layer becomes YOUR way of working.
Sezione E · La cassetta degli attrezzi · 5 slides
23demo 6
Modelli e sforzo
Model = quale cervello (Haiku veloce · Sonnet quotidiano · Opus ragionamento profondo). Effort = quanto ci pensa prima di rispondere (basso = rapido, alto = accurato). /model live + default in settings.json (you saw the line).
24demo 6
Contesto e compact
Context fills up → /compact summarizes and frees space. Details fade, FILES remain. Plus: where to see your usage.
25demo 6
Git nel loop
"Committa la fase 1" → Claude runs git. Every closed phase = a restore point. No commands memorized.
26demo 6
Live Server
VS Code extension: the browser updates by itself while Claude edits the files.
27
Provalo, non guardarlo
"Sembra giusto" is not enough: ask Claude to prove it. Taste today, full method in L4.
Chiusura · 3 slides
28
Il cerchio si chiude
errore → regola → skill → hook. Every correction made once. The system improves every week.
29
Cosa vi portate a casa
✓ 1 real rule (created AND linked) ✓ 1 tier-2 skill ✓ ~/.claude configured ✓ the MCP gate ✓ models+effort, context, git, testing
30
L4: capstone + Q&A
Bring what you shipped. Trusting output · testing · the project map. Q&A 10–15 min.
6 · Sources per block
| Content | Guide / source |
| Canonical L3 scope | curriculum/outline.md v1.6 · curriculum/inventory.md T2-01…T2-11 · curriculum-canonical.md Week 3 |
| 13 confirmed live concepts | sessions/lesson-3-skills-rules-mcps/planning-notes.md (Raffa-Giuse brainstorm Jul 8/9) |
| Skill tiers + scripts vocabulary | 3-l3-preview.md (participant prework, binding wording) + docs/raw/2026-06-30-skill-taxonomy-screenshots.md |
| Rules→hooks loop, scripts framing, global-vs-project tiers | Agentic map: map/lessons.md Lessons 28, 33/34, 38, 55 · full-map.md tier model |
| Silent-failure rules demo | curriculum/inventory.md T2-07 |
| Self-audit | inventory T2-08 |
| MCP friction-twice gate | Decision D3a, docs/raffaello-call-decisions.md · inventory T2-04 |
| Demo design standard (Setup/Action/Proof) | /curriculum-demo-audit skill (purpose-built for this workshop) |
| What NOT to teach (no swarms; one hand-made hook) | agentic-map evaluations: kieran-folder-as-agent.md · builder-checker-loop.md |
| Deck format | slides-l2.html design system + 3 patterns from the ai-literacy-bootcamp deck fork |
| What L1/L2 already taught | lesson-1-essentials/live-agenda.md · lesson-2-build-a-feature/outline.md + slides |
7 · Decisions — ALL RESOLVED (Giuseppe, Jul 14)
1. Hooks placement — ✅ concept mid-lesson + 4-min demo (slides 16–18). The hook demo stays #5 on the cut list, so it degrades to concept-only if the session runs long — slides 16–17 stay either way. Heads-up logged for Raffaello (his position was bonus-only).
2. Demo MCP — ✅ Google Calendar.
3. Pre-L3 send — ✅ confirmed sent. The live session can assume participants have the T1/T2/T3 skill-tier vocabulary.
4. Demo project — ✅ the L2 Essedi marketing asset generator (sessions/lesson-2-build-a-feature/demo/) for all six demos. Seeding required (bloated CLAUDE.md, broken globs: rule, 2–3 installation briefs, pre-built /chiudi-installazione) — in the demo-assets build step.
Status: plan approved → build started on branch giuseppe/l3-live-session: live-agenda.md → slides-l3.html (30) → demo assets → outline.md → instructor-notes.md → /curriculum-demo-audit + Italian gate.