Skip to content

Example skills pack

Agent Tools/Packager logo with trial and error colouring...

This walkthrough builds two skills and a pack.sh script that drives ATP authoring:

  1. A skill for better Markdown text files (doc-writing).
  2. A skill for writing notes in Markdown files with the current date in the filename (note-taking).
  3. A shell script that runs the atp commands 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.

It is easiest to create a packaging directory where the authoring magic will happen - even Q needs a laboratory!

Terminal window
mkdir pack-lab

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

Terminal window
mkdir pack-lab/doc-writing
mkdir pack-lab/note-taking

Target layout (paths are relative to where you run the tutorial; pack.sh can sit beside pack-lab/):

pack.sh
pack-lab/
doc-writing/
skill.yaml
skill.md
note-taking/
skill.yaml
skill.md

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.

We will create a skill.md and skill.yaml (or skill.yml) file.

Create a file pack-lab/doc-writing/skill.yaml and give it the following content.

name: doc-writing
description: formatting instructions for when asked to write any markdown document.

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 file
and 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.
```markdown
1. **Note1:** Not easy to read as a text file.
```

Again we will separate the two forms of content.

Create a file pack-lab/note-taking/skill.yaml and give it the following content.

name: note-taking
description: when asked to take notes

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.

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.1
atp package copyright "Warwick Molloy 2026"
atp package newpart skill
atp package part 1 usage "Writing markdown documents"
atp package part 1 bundle add doc-writing --skip-exec
atp package newpart skill
atp package part 2 usage "Ask the agent to write notes."
atp package part 2 bundle add note-taking --skip-exec
atp package summary
atp catalog add package
CommandPurpose
atp create package skeletonReset 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-execAttach 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-execAttach the note-taking bundle without exec staging.
atp package summaryPrint a manifest summary before publishing.
atp catalog add packageValidate and publish the package into your Station user catalog.