A skill is a reusable instruction file. Provider-neutral procedures live under `.agents/skills/`; Codex discovers them there, while this repository gives Claude Code thin slash-command adapters where needed. Start with the portable procedure and add a host adapter only for host-specific presentation or tool permissions. This example builds a read-only standup skill. It reads repository state and returns a three-line briefing; it does not change files or call external services.
Scanned 9/3/2026
Install to Claude Code
npx -y skills add conorbronsdon/agent-context-os --skill docs --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Docs?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/conorbronsdon-docs)More formats (shields.io, HTML) on the badges page.
# Write your first portable skill in 5 minutes
A skill is a reusable instruction file. Provider-neutral procedures live under
`.agents/skills/`; Codex discovers them there, while this repository gives
Claude Code thin slash-command adapters where needed. Start with the portable
procedure and add a host adapter only for host-specific presentation or tool
permissions.
This example builds a read-only standup skill. It reads repository state and returns a three-line briefing; it does not change files or call external services.
## 1. Look at a portable skill — 30 sec
Open `.agents/skills/context-start/SKILL.md`. A portable skill has frontmatter
followed by a focused procedure:
```markdown
---
name: context-start
description: Load this workspace's current state, recent decisions, blockers, priorities, and session continuity, then give a concise briefing. Use only when the user explicitly asks to begin or resume a workspace session.
---
# Start a workspace session
<!-- Procedure abridged here; open the source for the complete workflow. -->
1. Read the minimum relevant repository state.
2. Summarize the current objective and next action.
3. Keep the workflow read-only.
```
- The block between the `---` lines is portable frontmatter. Keep only the
skill name and a concrete description of what it does and when to invoke it.
- Everything below is the procedure. Keep provider-specific paths, grants, and
UI behavior out of this file.
## 2. Create the new skill — 30 sec
The directory name is the skill name:
```bash
mkdir -p .agents/skills/standup
```
Create `.agents/skills/standup/SKILL.md`:
```markdown
---
name: standup
description: Summarize the latest session and current state as a three-line standup when the user explicitly asks for a standup briefing.
---
# Standup
1. Read the latest dated file in `sessions/` and `state/current.md`.
2. Return exactly three labeled lines:
- **Shipped** — the most important completed result.
- **Next** — the single most important next action.
- **Blocked** — the current blocker, or `nothing recorded`.
3. Do not modify files, infer live external data, or list lower-priority work.
```
Keep project facts in `projects/<project>/context.md` and reference that path from the procedure. Do not duplicate changing project facts inside a reusable skill.
## 3. Add optional Codex presentation metadata
Codex discovers repository skills under `.agents/skills/`. If you want explicit UI metadata, add `.agents/skills/standup/agents/openai.yaml` with a reviewed prompt that invokes the exact skill token and disables implicit invocation:
```yaml
interface:
display_name: Standup
short_description: Summarize repository state as a focused standup.
default_prompt: Use $standup to summarize the latest session and current state.
policy:
allow_implicit_invocation: false
```
Run it in Codex by explicitly invoking `$standup`.
## 4. Add an optional Claude Code adapter
Claude Code project slash commands live in `.claude/commands/`. A thin adapter points to the portable skill rather than copying its body. Create `.claude/commands/standup.md`:
```markdown
---
name: standup
description: "Summarize the latest session and current state as a focused standup"
allowed-tools: "Read, Glob"
disable-model-invocation: true
---
Read and follow `.agents/skills/standup/SKILL.md`.
```
Run it in Claude Code with `/standup`. `allowed-tools` is a pre-approval grant, not a restriction, so keep it narrow. The user-only invocation gate prevents a write-capable lifecycle command pattern from being triggered implicitly.
## 5. Validate and inspect
```bash
bash scripts/validate-all.sh --workspace
git diff -- .agents/skills/standup .claude/commands/standup.md
```
Test each host you claim. A portable file layout does not prove that another agent has equivalent discovery, invocation, permission, or tool behavior.
## 6. Add project routing only when needed
If the workflow is project-specific, add a concise route to `ROUTING.md`, for example:
```markdown
| Standup, current status, or next action | Read `state/current.md`, then use `$standup` |
```
Want it to reach your calendar, email, or Drive? Review the data and side-effect boundaries under **Optional integrations** in the [README](../README.md) before connecting a tool.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!