99 lines
3.1 KiB
Markdown
99 lines
3.1 KiB
Markdown
# Project template
|
|
|
|
Harness-agnostic project scaffold using the Agent Skills open standard.
|
|
|
|
## Quick start
|
|
|
|
```bash
|
|
degit mathias/project-template my-new-project
|
|
cd my-new-project
|
|
task init
|
|
```
|
|
|
|
## Structure
|
|
|
|
```
|
|
.context/
|
|
├── PROJECT.md ← Canonical project context (edit this)
|
|
├── mcp.json ← MCP server config (generated on first sync)
|
|
└── system-prompt.txt ← Generated: generic system prompt
|
|
|
|
.skills/
|
|
├── go-patterns/
|
|
│ └── SKILL.md ← Agent Skills standard format
|
|
└── htmx-patterns/
|
|
└── SKILL.md
|
|
|
|
scripts/
|
|
└── context-sync.sh ← Adapter generator (finds root AGENT.md automatically)
|
|
|
|
Taskfile.yml ← Task runner config
|
|
DECISIONS.md ← Why things are the way they are
|
|
```
|
|
|
|
## Generated files (gitignored)
|
|
|
|
| File | Consumer | Notes |
|
|
|------|----------|-------|
|
|
| `AGENTS.md` | Crush, Pi, Antigravity | Root + project concatenated |
|
|
| `CLAUDE.md` | Claude Code | Project-only (inherits root via tree walk) |
|
|
| `.cursorrules` | Cursor | Root + project concatenated |
|
|
| `.aider.conventions.md` | Aider | Root + project concatenated |
|
|
| `.context/system-prompt.txt` | Open WebUI, Mods, generic | Root + project concatenated |
|
|
|
|
## How root context works
|
|
|
|
The script walks up from the project directory looking for `~/dev/.context/AGENT.md`.
|
|
|
|
- **Claude Code**: inherits natively (reads every `CLAUDE.md` up the tree) → project CLAUDE.md is project-only
|
|
- **Everything else**: can't walk the tree → script concatenates root + project into each generated file
|
|
|
|
## Skills
|
|
|
|
Skills use the [Agent Skills open standard](https://github.com/badlogic/pi-skills). Each skill is a folder with a `SKILL.md` containing frontmatter:
|
|
|
|
```yaml
|
|
---
|
|
name: my-skill
|
|
description: What this skill does. When to use it.
|
|
---
|
|
# Instructions here
|
|
```
|
|
|
|
Supported natively by Claude Code, Pi, Crush, and Antigravity. No adapter needed for skills.
|
|
|
|
### Adding a skill
|
|
|
|
```bash
|
|
mkdir .skills/my-new-skill
|
|
# Create .skills/my-new-skill/SKILL.md with frontmatter + instructions
|
|
```
|
|
|
|
### Using pi-skills (cross-compatible)
|
|
|
|
```bash
|
|
# User-level (all projects)
|
|
git clone https://github.com/badlogic/pi-skills ~/.pi/agent/skills/pi-skills
|
|
|
|
# Symlink for Claude Code
|
|
ln -s ~/.pi/agent/skills/pi-skills/brave-search ~/.claude/skills/brave-search
|
|
```
|
|
|
|
## Usage with specific tools
|
|
|
|
**Claude Code**: `task context:sync:claude` → reads `CLAUDE.md` + discovers `.skills/*/SKILL.md`
|
|
|
|
**Crush**: `task context:sync:agents` → reads `AGENTS.md` + discovers `.skills/*/SKILL.md`
|
|
|
|
**Pi**: `task context:sync:agents` → reads `AGENTS.md` + discovers `.skills/*/SKILL.md` (or symlink `.skills/` to `.pi/skills/`)
|
|
|
|
**Antigravity**: `task context:sync:agents` → reads `AGENTS.md` + discovers `.skills/*/SKILL.md`
|
|
|
|
**Cursor**: `task context:sync:cursor` → reads `.cursorrules`
|
|
|
|
**Mistral Vibe**: Run root-level `task context:sync:vibe` once → `vibe --agent mathias`
|
|
|
|
**Open WebUI / Mods**: Copy `.context/system-prompt.txt` into a preset or pipe it
|
|
|
|
**Any other tool**: Point at `.context/PROJECT.md` directly — it's human-readable markdown
|