Example skills pack

Introduction
Section titled “Introduction”This walkthrough builds two skills and a pack.sh script that drives ATP authoring:
- A skill for better Markdown text files (
doc-writing). - A skill for writing notes in Markdown files with the current date in the filename (
note-taking). - A shell script that runs the
atpcommands to define the package and publish it to your Station catalog.
In ATP terms, the package has multiple parts—two Skill parts—and each skill is shipped via a bundle directory.
This tutorial vs the repository example-skills-pack/
Section titled “This tutorial vs the repository example-skills-pack/”The agent-tool-packager repo already contains example-skills-pack/ at its root: pack.sh, doc-writing/, note-taking/, and a checked-in atp-package.yaml. You can cd into that directory and run ./pack.sh to author and publish the same shape of package without recreating files by hand.
The steps below use a generic pack-lab/ directory name so you can follow along in any empty folder. If you work inside a clone of the repo, keep tutorial paths (pack-lab/…) separate from the committed example-skills-pack/ tree unless you intend to modify the upstream example.
Preparing the laboratory
Section titled “Preparing the laboratory”It is easiest to create a packaging directory where the authoring magic will happen - even Q needs a laboratory!
mkdir pack-labIn the lab, we want to perform the package authoring. It’s nice to automate this in a script.
We will need some bundle directories where the skill materials will go.
mkdir pack-lab/doc-writingmkdir pack-lab/note-takingTarget layout (paths are relative to where you run the tutorial; pack.sh can sit beside pack-lab/):
pack.shpack-lab/ doc-writing/ skill.yaml skill.md note-taking/ skill.yaml skill.mdWrite skills as single file or separate?
Section titled “Write skills as single file or separate?”ATP supports writing a single SKILL.md file with YAML frontmatter and Markdown body but it also supports writing the YAML and the Markdown separately, to allow for syntax highlighting from your editor. Let’s take the example of writing them separately.
Content for the doc-writing skill
Section titled “Content for the doc-writing skill”We will create a skill.md and skill.yaml (or skill.yml) file.
doc-writing: skill.yaml - the frontmatter
Section titled “doc-writing: skill.yaml - the frontmatter”Create a file pack-lab/doc-writing/skill.yaml and give it the following content.
name: doc-writingdescription: formatting instructions for when asked to write any markdown document.doc-writing: skill.md - the markdown body
Section titled “doc-writing: skill.md - the markdown body”Create a file pack-lab/doc-writing/skill.md and give it the following markdown.
Markdown is a text file format that should be as readable as a text fileand only made "nicer" to read when rendered as HTML or other manner.
1. Use heading levels 1 to 4 (#) to (####) and use level 1 for new sections, not only the title, so the title and its introduce is a new section and should have level 1 heading.
2. Space out the file around headings and between paragraphs so that the file does not get cluttered. Place an empty line after a heading.
3. Use Mermaid charts for images where they add value
4. Use headings instead of **highlight**.
5. Try to format the table so it looks clear in the markdown text file.
6. Tables communicate better when a category or label is being described when the row is shorter than 60 chars. For long rows, use the next level 3 or heading (### or ####) with long-form text, one or more paragraphs below the heading, which allows for more items to be added.
7. Space out bulleted or numbered lists, so they are easier to read.
Table example - see how the pipes align.
```markdown| Category | Description ||----------|----------------------|| Note 1 | make it easy to read |```
Using a level 4 heading gives more room for lengthier answers and is better than lists with highlights, so do not do this.
```markdown1. **Note1:** Not easy to read as a text file.```Content for the note-taking skill
Section titled “Content for the note-taking skill”Frontmatter and markdown body
Section titled “Frontmatter and markdown body”Again we will separate the two forms of content.
notetaking: skill.yaml - frontmatter
Section titled “notetaking: skill.yaml - frontmatter”Create a file pack-lab/note-taking/skill.yaml and give it the following content.
name: note-takingdescription: when asked to take notesnotetaking: skill.md - markdown body
Section titled “notetaking: skill.md - markdown body”Create a file pack-lab/note-taking/skill.md and give it the following markdown.
Notes are held in the `notes/` directory and follow this document guide for formatting. The filename should follow the pattern YYYY-MM-DD-{type}-{short-summary}.md where type is defined below and short summary indicates the essence of the content.
## types of notes
A note can be about multiple types:- plan - Planning a future change, with references to supporting docs.- tests - record test code that was added, both unit and integration tests.- coding - record the recent code changes made to implement a plan and pass tests.- release - based on other notes all collected, summarise what features were added since the last release note.Package Authoring Script
Section titled “Package Authoring Script”The file will be located in the package lab.
Create a file pack-lab/pack.sh and give it the following content.
#!/bin/bash
## A script that uses ATP to create a package from this example dir structure.
atp create package skeleton
atp package name "Example skills pack"atp package developer "Warwick Molloy"atp package license "Apache 2.0"atp package version 0.1.1atp package copyright "Warwick Molloy 2026"
atp package newpart skillatp package part 1 usage "Writing markdown documents"atp package part 1 bundle add doc-writing --skip-exec
atp package newpart skillatp package part 2 usage "Ask the agent to write notes."atp package part 2 bundle add note-taking --skip-exec
atp package summaryatp catalog add packageWhat does this script mean?
Section titled “What does this script mean?”| Command | Purpose |
|---|---|
atp create package skeleton | Reset authoring state and create a fresh Multi-capable manifest and stage.tar. |
atp package name … through atp package copyright … | Set package identity, authorship, licence, version, and copyright. |
atp package newpart skill (first time) | Add the first Skill part (doc-writing). |
atp package part 1 usage "…" | Human- and agent-facing description for part 1. |
atp package part 1 bundle add doc-writing --skip-exec | Attach the doc-writing bundle; --skip-exec because there are no binaries to mark executable. |
atp package newpart skill (second time) | Add the second Skill part (note-taking). |
atp package part 2 usage "…" | Usage for the note-taking part. |
atp package part 2 bundle add note-taking --skip-exec | Attach the note-taking bundle without exec staging. |
atp package summary | Print a manifest summary before publishing. |
atp catalog add package | Validate and publish the package into your Station user catalog. |