compile
Skill6 starsChanged 8 months agoMITView on GitHub
Compile a course module into the Andamio import format for publishing.
13 other projects use a version of this.
Adopted by
Most recently taken up by
- Samuel0101010/wisp-rulecasttheir own version, first seen Oct 20, 2026
- jtenniswood/espframetheir own version, first seen Oct 8, 2026
- jtenniswood/esphome-media-playertheir own version, first seen Oct 8, 2026
- alibaba/loongcollectortheir own version, first seen Oct 8, 2026
- jtenniswood/espcontroltheir own version, first seen Oct 8, 2026
- apache/skywalkingtheir own version, first seen Oct 8, 2026
Used with
Projects with it also use expert-reset, updates and 1 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
jtenniswoodSkillexpert-reset
Reimagine this repository from first principles using the current product and user experience as the target. Use when the user says "/expert-reset", asks how the project should be rebuilt if starting again, wants bold architecture or component-structure recommendations, or wants a research-only reset plan unconstrained by current implementation details.
Also in 3 projects that use this
jtenniswoodSkillupdates
Summarize user-facing project updates from the last 7 days, ordered by importance and written as one-sentence "Feature: description" entries. Use when the user says "/updates", asks what changed recently, or wants a concise list of recent features, device support, fixes that users will notice, or other product value.
Also in 3 projects that use this
MicrosoftSkillpr-review
Verify the technical accuracy of a vscode-docs pull request against the VS Code source code in microsoft/vscode. Use when reviewing a docs PR for factual correctness: setting names, command IDs, default values, API shapes, keybindings, versioned availability, and described behavior.
Also in 3 projects that use this
Other versions13 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 13
- apache/skywalking★ 25ksame name
- alibaba/loongcollector★ 2.2ksame name
- jtenniswood/espcontrol★ 1.2ksame name
- jtenniswood/esphome-media-player★ 235same name
- jtenniswood/espframe★ 207same name
- maxwellsdm1867/wheeler★ 12same name
- Megaprompting/torque-loop★ 10same name
- anatoly-tech/obsidian-skills★ 9same name
- clearsmog/claude-skills★ 2same name
- sameerhimati/claude-code-kit★ 1same name
3 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository16 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- andamio-cliSkill
- apprenticeSkill
- assess-sltsSkill
- beginnerSkill
- classify-lesson-typesSkill
- compoundSkill
- course-workflowSkill
- draft-sltsSkill
- gather-code-examplesSkill
- gather-screenshotsSkill
- releaseSkill
- self-assess-readinessSkill
- startSkill
- teacherSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
27 rules. 0 are common, 17 are distinctive, and 10 are very specific to this project.
0
Common
Most of the 9 edited versions we read keep these.
17
Distinctive
This author's own choices. Worth a look.
10
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 41
Upsert behavior: If code matches an existing module, content will be updated.
- Distinctive: line 60
After course selection, list modules:
- Very specific: line 76
If lessons/module-N/ doesn't have files for all SLTs, show warning
- Distinctive: line 77
Ask if user wants to continue anyway (partial compile)
- Distinctive: line 84
All SLTs for that module (the "I can..." statements)
- Very specific: line 88
All lesson markdown files (e.g., 1.1-compare-access-token.md)
- Very specific: line 93
Create a unique code for the module.
- Very specific: line 158
Remove frontmatter-style header (SLT, Type lines at top, --- divider)
- Distinctive: line 160
Keep all lesson content below the H1 title
- Very specific: line 189
If the module section in 00-course.md has introductory text, extract it:
- Distinctive: line 202
If there's no intro text in the source, skip this file.
- Distinctive: line 206
Before writing files, validate:
- Very specific: line 227
Write all files to compiled/[course-slug]/[module-code]/.
- Very specific: line 262
Place images in an assets/ subdirectory within your module folder:
- Distinctive: line 281
Use relative paths from the markdown file:
- Distinctive: line 291
All three path formats work:
- Distinctive: line 304
Default size is Medium (600px)
- Very specific: line 305
Use S/M/L toggle in editor to resize (300/600/900px)
- Very specific: line 309
Use lowercase filenames without spaces: wallet-setup.png not Wallet Setup.png
- Distinctive: line 310
Keep filenames unique across subdirectories
- Distinctive: line 316
When copying lesson content, apply these transformations:
- Distinctive: line 336
Key Terms sections: Keep (useful for learners)
- Distinctive: line 338
What's Next sections: Remove or keep based on context
- Distinctive: line 339
Remove if it references "the next lesson" specifically
- Distinctive: line 340
Keep if it references other courses or resources
- Distinctive: line 342
"Want to know how this works?" links: Keep (cross-course references are good)
- Distinctive: line 370
Keep lesson content intact: Only strip metadata headers, not pedagogical content.
“Common” is measured: kept by at least 6 in 10 of the 9 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Skill: Compile Module for Import
Description
Takes a completed course module and packages it into the clean directory structure required by Andamio's module import system. Creates a compiled/ directory with outline.md, numbered lesson files, and optional introduction.md and assignment.md.
Import Format Quick Reference
module-folder/
├── outline.md # Required
├── introduction.md # Optional
├── assignment.md # Optional
├── lesson-1.md # Optional (maps to SLT 1)
├── lesson-2.md # Optional (maps to SLT 2)
└── ...outline.md critical requirements:
| Element | Format | Notes |
| Title (YAML) | title: in frontmatter | Module display name |
| Code | YAML code: | Unique module identifier — can be a number (101) or slug (intro-cardano) |
| SLT heading | ## SLTs | Must be exactly this (H2, case-insensitive) — first element after frontmatter |
| SLT list | Numbered or bulleted | Each item becomes one SLT |
Common mistakes:
- Adding
# Titleheading in outline.md → not needed, title comes from YAML frontmatter - Using
# Student Learning Targetsinstead of## SLTs→ parser ignores SLTs
Upsert behavior: If code matches an existing module, content will be updated.
Instructions
1. Select Course and Module
First, list courses in courses-in-progress/:
## Available Courses
| # | Course | Modules |
|---|--------|---------|
| 1 | andamio-for-contributors | 4 |
| 2 | andamio-for-api-developers | 4 |
Which course? (number or slug)After course selection, list modules:
## Modules in [Course Name]
| # | Module | SLTs | Lessons Written |
|---|--------|------|-----------------|
| 1 | Your On-Chain Identity | 3 | 3/3 |
| 2 | Browsing Courses and Projects | 3 | 3/3 |
| 3 | Earning a Credential | 2 | 2/2 |
| 4 | The Contribution Loop | 4 | 1/4 |
Which module to compile? (number)Warn if lessons are incomplete:
- If
lessons/module-N/doesn't have files for all SLTs, show warning - Ask if user wants to continue anyway (partial compile)
2. Parse Source Materials
From 00-course.md, extract for the selected module:
- Module title (e.g., "Your On-Chain Identity")
- Module number (1, 2, 3...)
- All SLTs for that module (the "I can..." statements)
- Assignment section content
From lessons/module-N/:
- All lesson markdown files (e.g.,
1.1-compare-access-token.md) - Map by SLT index (first number before hyphen)
3. Generate Module Code
Create a unique code for the module. This can be a numeric code or a slug string:
Numeric convention (when course uses numbered modules):
- Module 1 of course →
101 - Module 2 of course →
102 - Module 3 of course →
103 - Intermediate course modules →
201,202,203
Slug convention (when course uses descriptive identifiers):
intro-cardanowallet-setupfirst-transaction
The code must be unique within the course. If it matches an existing module, the import will upsert (update) rather than create.
4. Create Output Directory
Create compiled/[course-slug]/[module-code]/:
compiled/
andamio-for-contributors/
101/
outline.md
lesson-1.md
lesson-2.md
lesson-3.md
assignment.md5. Generate outline.md
---
title: [Module Title]
code: [module-code]
---
## SLTs
1. [First SLT text, exactly as it appears on-chain]
2. [Second SLT text, exactly as it appears on-chain]
3. [Third SLT text, exactly as it appears on-chain]Critical format requirements:
- No H1 heading in outline.md — the module title comes from YAML
title:field only - SLT heading must be exactly
## SLTs(H2 level, case-insensitive) — first element after frontmatter - Common mistake: Adding
# Titleafter frontmatter or using# Student Learning Targets - SLT list can be numbered (1.) or bulleted (-, *)
- Each list item becomes one SLT
SLT text formatting:
- Preserve the SLT text exactly as written — do NOT strip "I can" or other prefixes
- The importer uses the text as-is for the learning target
- Number them 1, 2, 3... matching lesson file numbers
6. Generate lesson-N.md Files
For each SLT, copy the corresponding lesson file:
1.1-compare-access-token.md→lesson-1.md1.2-connect-wallet.md→lesson-2.md1.3-mint-access-token.md→lesson-3.md
Lesson file transformations:
- Remove frontmatter-style header (SLT, Type lines at top,
---divider) - Add an
# H1title — this becomes the lesson title in the import system. Use a short, descriptive title (e.g.,# Connect a Cardano Wallet,# Mint Your Access Token) - Keep all lesson content below the H1 title
7. Generate assignment.md
Extract assignment content from 00-course.md:
# Module Assignment
## Task
[Description of what the learner will do]
## Deliverables
1. [First deliverable]
2. [Second deliverable]
3. [Third deliverable]Assignment transformations:
- Convert "Artifact:" to the Task section
- Convert "Assessment criteria:" bullets to numbered Deliverables
- Optionally add a Notes section for on-chain cost, timing, common mistakes
8. Generate introduction.md (Optional)
Module introduction shown before lessons. Great for context, prerequisites, or learning objectives.
If the module section in 00-course.md has introductory text, extract it:
# Welcome to [Module Topic]
[Module-level introduction - context, what learners will accomplish]
## Prerequisites
- [Prerequisite 1]
- [Prerequisite 2]If there's no intro text in the source, skip this file.
9. Validation
Before writing files, validate:
- All SLTs have corresponding lesson files
- Lesson files aren't empty
- Assignment content exists in
00-course.md - Module code is unique (no collision with existing compiled modules)
Report any issues:
## Validation
- [x] 3 SLTs found in module
- [x] 3 lesson files found
- [x] Assignment content found
- [ ] Missing: lesson-2.md (SLT 1.2)
Fix missing lessons before compiling, or proceed with partial?10. Write and Confirm
Write all files to compiled/[course-slug]/[module-code]/.
Show summary:
## Compiled: Module [N] - [Title]
**Output:** `compiled/[course-slug]/[module-code]/`
### Files Created
| File | Size | Status |
|------|------|--------|
| outline.md | 245 bytes | Created |
| lesson-1.md | 3.2 KB | Created |
| lesson-2.md | 2.8 KB | Created |
| lesson-3.md | 4.1 KB | Created |
| assignment.md | 890 bytes | Created |
### Ready for Import
This module is ready to upload to Andamio Studio.
**Next steps:**
1. Review files in `compiled/[course-slug]/[module-code]/`
2. Upload folder via Studio import
3. Verify SLTs and content in previewImage Handling
Images in lessons are automatically processed during import. Place them correctly and they'll be uploaded to cloud storage with local paths replaced by hosted URLs.
Folder Structure
Place images in an assets/ subdirectory within your module folder:
compiled/
andamio-for-contributors/
101/
outline.md
lesson-1.md
lesson-2.md
assignment.md
assets/
diagram-1.png
screenshot-wallet.png
screenshots/
step-by-step.pngReferencing Images in Markdown
Use relative paths from the markdown file:


All three path formats work:
assets/image.png./assets/image.png- Just
image.png(matched by filename as fallback)
Supported Formats
.png, .jpg, .jpeg, .gif, .webp, .svg
What Happens on Import
- Images are automatically uploaded to cloud storage
- Local paths are replaced with hosted URLs
- Default size is Medium (600px)
- Use S/M/L toggle in editor to resize (300/600/900px)
Best Practices
- Use lowercase filenames without spaces:
wallet-setup.pngnotWallet Setup.png - Keep filenames unique across subdirectories
- Organize by type:
assets/diagrams/,assets/screenshots/ - Name screenshots to match lesson flow:
1.1-connect-wallet-01.png,1.1-connect-wallet-02.png
Lesson File Cleaning Rules
When copying lesson content, apply these transformations:
- Top metadata block — strip the SLT/Type/divider metadata:
# Lesson X.Y: Title ← STRIP this specific format
**SLT:** I can... ← STRIP
**Type:** Product Demo ← STRIP
--- ← STRIP- Add an
# H1title — this becomes the lesson title in the app:
# Connect a Cardano Wallet ← ADD a short, descriptive title
## Before You Start ← Lesson content starts here
...The H1 title should be descriptive but concise (not "Lesson 1.2: Connect a Cardano Wallet", just "Connect a Cardano Wallet").
- Key Terms sections: Keep (useful for learners)
- What's Next sections: Remove or keep based on context
- Remove if it references "the next lesson" specifically
- Keep if it references other courses or resources
- "Want to know how this works?" links: Keep (cross-course references are good)
Error Handling
Missing lesson file:
Warning: No lesson file found for SLT 1.2
- Expected: lessons/module-1/1.2-*.md
- Action: Creating empty lesson-2.md placeholderMissing assignment:
Warning: No assignment found for Module 1
- Expected: "### Module 1 Assignment" in 00-course.md
- Action: Skipping assignment.mdModule code collision:
Error: Module code "101" already exists
- Existing: compiled/andamio-for-contributors/101/
- Action: Choose different code or delete existingGuidelines
- Don't modify source files. This skill only reads and outputs to
compiled/. - Keep lesson content intact. Only strip metadata headers, not pedagogical content.
- SLT text is sacred. Once on-chain, SLTs cannot change. Double-check the outline.md output.
- Prefer completeness. Warn about missing pieces but allow partial compiles for preview.
- Clean output. The
compiled/directory should be uploadable as-is.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

