agentleFS
Andamio-PlatformAndamio-Platform/coach/skills/compile/SKILL.md

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

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.
  • jtenniswoodSkill

    expert-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

  • jtenniswoodSkill

    updates

    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

  • MicrosoftSkill

    pr-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

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
  1. Very specific:

    Upsert behavior: If code matches an existing module, content will be updated.

    line 41
  2. Distinctive:

    After course selection, list modules:

    line 60
  3. Very specific:

    If lessons/module-N/ doesn't have files for all SLTs, show warning

    line 76
  4. Distinctive:

    Ask if user wants to continue anyway (partial compile)

    line 77
  5. Distinctive:

    All SLTs for that module (the "I can..." statements)

    line 84
  6. Very specific:

    All lesson markdown files (e.g., 1.1-compare-access-token.md)

    line 88
  7. Very specific:

    Create a unique code for the module.

    line 93
  8. Very specific:

    Remove frontmatter-style header (SLT, Type lines at top, --- divider)

    line 158
  9. Distinctive:

    Keep all lesson content below the H1 title

    line 160
  10. Very specific:

    If the module section in 00-course.md has introductory text, extract it:

    line 189
  11. Distinctive:

    If there's no intro text in the source, skip this file.

    line 202
  12. Distinctive:

    Before writing files, validate:

    line 206
  13. Very specific:

    Write all files to compiled/[course-slug]/[module-code]/.

    line 227
  14. Very specific:

    Place images in an assets/ subdirectory within your module folder:

    line 262
  15. Distinctive:

    Use relative paths from the markdown file:

    line 281
  16. Distinctive:

    All three path formats work:

    line 291
  17. Distinctive:

    Default size is Medium (600px)

    line 304
  18. Very specific:

    Use S/M/L toggle in editor to resize (300/600/900px)

    line 305
  19. Very specific:

    Use lowercase filenames without spaces: wallet-setup.png not Wallet Setup.png

    line 309
  20. Distinctive:

    Keep filenames unique across subdirectories

    line 310
  21. Distinctive:

    When copying lesson content, apply these transformations:

    line 316
  22. Distinctive:

    Key Terms sections: Keep (useful for learners)

    line 336
  23. Distinctive:

    What's Next sections: Remove or keep based on context

    line 338
  24. Distinctive:

    Remove if it references "the next lesson" specifically

    line 339
  25. Distinctive:

    Keep if it references other courses or resources

    line 340
  26. Distinctive:

    "Want to know how this works?" links: Keep (cross-course references are good)

    line 342
  27. Distinctive:

    Keep lesson content intact: Only strip metadata headers, not pedagogical content.

    line 370

“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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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:

ElementFormatNotes
Title (YAML)title: in frontmatterModule display name
CodeYAML code:Unique module identifier — can be a number (101) or slug (intro-cardano)
SLT heading## SLTsMust be exactly this (H2, case-insensitive) — first element after frontmatter
SLT listNumbered or bulletedEach item becomes one SLT

Common mistakes:

  • Adding # Title heading in outline.md → not needed, title comes from YAML frontmatter
  • Using # Student Learning Targets instead 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-cardano
  • wallet-setup
  • first-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.md

5. 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 # Title after 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.md
  • 1.2-connect-wallet.md → lesson-2.md
  • 1.3-mint-access-token.md → lesson-3.md

Lesson file transformations:

  • Remove frontmatter-style header (SLT, Type lines at top, --- divider)
  • Add an # H1 title — 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 preview

Image 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.png

Referencing Images in Markdown

Use relative paths from the markdown file:

![Wallet Setup](assets/screenshot-wallet.png)

![Diagram](./assets/diagram-1.png)

![Step by Step](assets/screenshots/step-by-step.png)

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

  1. Images are automatically uploaded to cloud storage
  2. Local paths are replaced with hosted URLs
  3. Default size is Medium (600px)
  4. Use S/M/L toggle in editor to resize (300/600/900px)

Best Practices

  • Use lowercase filenames without spaces: wallet-setup.png not Wallet 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:

  1. 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
  1. Add an # H1 title — 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").

  1. Key Terms sections: Keep (useful for learners)
  2. 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
  3. "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 placeholder

Missing assignment:

Warning: No assignment found for Module 1
- Expected: "### Module 1 Assignment" in 00-course.md
- Action: Skipping assignment.md

Module code collision:

Error: Module code "101" already exists
- Existing: compiled/andamio-for-contributors/101/
- Action: Choose different code or delete existing

Guidelines

  • 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.

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.