AI Coding Agent Orchestrator — Automatically implement features from requirements using AI agents.
Transform feature ideas into working code through autonomous development with human oversight.
When working on long running tasks with agents, their context window fills up and the performance degrades. To mitigate this, hone-ai provides a solution starting each new iteration with a fresh context window just passing in a summary of the progress made so far on the specific PRD, repository architecture and gotchas, and any other relevant information.
Everything else is stripped away, leaving only the essential information needed for the next iteration. This approach helps maintain optimal performance and reduces the likelihood of context drift.
It's a surprisingly powerful process.
Install hone as a native Claude Code plugin:
/plugin marketplace add oskarhane/hone-ai
/plugin install hone@hone-ai
To update:
/plugin marketplace update hone-ai
That's it! You're ready to use hone.
# 1. Generate project documentation (if no AGENTS.md exists). A one time thing.
/hone:agents-md
# 2. Create a PRD from your feature description
/hone:prd "Add user login with email and password"
# 3. Manually review the generated PRD
# Edit .plans/prd-user-login.md as needed
# 4. Generate tasks from the PRD
/hone:prd-to-tasks .plans/prd-user-login.md
# 5. (Optional) Extend PRD with additional requirements
/hone:extend-prd .plans/prd-user-login.md "Add two-factor authentication"
# 6. Implement the feature
/hone:run .plans/tasks-user-login.yml -i 10
# 7. Archive completed features (optional)
/hone:prune
hone will implement the feature, run tests, and commit changes automatically.
All skills are invoked via /hone:<skill-name>.
| Skill | Description | Example |
|---|---|---|
/hone:init |
Initialize hone in current directory | /hone:init |
/hone:agents-md |
Generate AGENTS.md project docs | /hone:agents-md --overwrite |
/hone:prd |
Generate PRD from feature description | /hone:prd "Add user authentication" |
/hone:prd-to-tasks |
Generate task YAML from PRD | /hone:prd-to-tasks .plans/prd-user-auth.md |
/hone:extend-prd |
Add requirements to existing PRD | /hone:extend-prd .plans/prd-user-auth.md "Add OAuth" |
/hone:run |
Execute implement/review/finalize loop | /hone:run .plans/tasks-user-auth.yml -i 5 |
| Skill | Description |
|---|---|
/hone:status |
Show incomplete task lists with progress |
/hone:prds |
List all PRDs with status |
/hone:prune |
Archive completed PRDs (--dry-run to preview) |
A feature has three files:
prd-<feature>.md- Feature description, goals, non-goals, and acceptance criteria.tasks-<feature>.yml- A task breakdown of the prd. Description, status, dependencies, and most important, acceptance criteria for each task.progress-<feature>.txt- A continuously updated progress report on description of what has been done, choices made for each task etc.
To create a feature, use /hone:prd "<description or link or file>".
To break down a PRD into tasks, use /hone:prd-to-tasks .plans/prd-<feature>.md.
The implementation loop is a continuous process of iterating over the tasks in a feature's tasks-<feature>.yml file.
This is the most important part: every iteration starts with a new agent invocation, i.e. a new agent context.
This also means that you can work some time on a feature, switch to a different feature and get back to the old one without polluting the context or have the agent digress over time.
The agent context is initialized with 3 files (plus directions via the prompt):
tasks-<feature>.ymlprogress-<feature>.txtAGENTS.md- information on how to run feedback loops in here, extremely important!
The tasks file has a link to the PRD file so the agent knows how to find it if needed.
The Agent decides what task to work on in each iteration of the loop.
Implementation has three stages:
- Implementation: Implement the chosen task. Run feedback loops (type checking, linting, unit testing) before moving forward.
- Review: Have the agent review the implementation (preferably with a different LLM). Run feedback loops (type checking, linting, unit testing) again.
- Finalization: Finalize the implementation with the Agent. Run feedback loops (type checking, linting, unit testing) again. Update the task status in
tasks-<feature>.yml, write a summary inprogress-<feature>.txt, and update AGENTS.md with gotchas if necessary.
To work on a feature use /hone:run .plans/tasks-<feature>.yml -i <iterations>.
The real benefits of having this implementation loop with a very focused and on point agent context each iteration is that the agents don't get distracted or digress over time. After each task, everything is cleaned up and ready to be picked up at any time without having to look for old chat threads to find important information needed for the implementation.
The focused context combined with clear task acceptance criteria and running feedback loops (linting, testing etc.) in each step is key.
This usually takes you to a good 90% of a completely finished feature (depending on the size/complexity, often it takes you 100%) and if needed you'd use the agent directly a bit back and forth to get all the way.
You can at any time manually add new tasks in the tasks file for a feature. Just add them in the same format as the rest and set their status to pending and the agent will get to them.
If you want to add something larger to an existing feature and don't fancy writing a lot of tasks yourself you can extend a PRD and have the agent create new tasks in the existing tasks file. /hone:extend-prd .plans/prd-<feature>.md "<added scope description>".
hone breaks feature development into 3 phases:
- Implement — AI selects and codes the next task (following dependencies)
- Review — AI checks code quality, tests, and security
- Finalize — AI applies feedback, updates docs, and commits changes
Each /hone:run iteration executes this cycle. Unlike external CLI tools, the plugin runs everything natively inside Claude Code — no subprocess overhead.
When creating PRDs, you can reference files and URLs directly in your feature description:
Local files:
./docs/api-spec.md- Read project documentationsrc/components/Button.tsx- Analyze existing components./database/schema.sql- Review database structure
URLs:
https://docs.stripe.com/api- External API documentationhttps://www.figma.com/design/123/App- Design specifications
The AI agent automatically reads files and fetches web content to generate more accurate PRDs.
Use /hone:extend-prd to add new requirements to existing PRD files:
/hone:extend-prd <prd-file> <requirement-description>
Features:
- Interactive refinement - AI asks clarifying questions to improve requirement quality
- Automatic task generation - Creates tasks for new requirements only
- File/URL support - Reference local files and URLs in requirement descriptions
- Collision-free IDs - Automatically assigns sequential requirement and task IDs
- Atomic operations - Safe file updates with rollback on failure
Examples:
/hone:extend-prd .plans/prd-user-auth.md "Add password reset functionality"
/hone:extend-prd .plans/prd-dashboard.md "Add export functionality similar to ./src/reports/export.ts"
/hone:extend-prd .plans/prd-payment.md "Implement webhooks following https://stripe.com/docs/webhooks"
Use /hone:prune to archive completed PRDs and their associated files:
/hone:prune # Archive completed PRDs to .plans/archive/
/hone:prune --dry-run # Preview what would be archived without moving files
What gets archived:
The prune command moves completed PRD triplets to .plans/archive/:
prd-<feature>.md- PRD documenttasks-<feature>.yml- Task breakdownprogress-<feature>.txt- Development log
PRDs are eligible for archiving when all tasks have status completed or cancelled.
project-root/
├── .plans/
│ ├── hone.config.yml # Configuration
│ ├── prd-<feature>.md # Requirements
│ ├── tasks-<feature>.yml # Task breakdown
│ ├── progress-<feature>.txt # Development log
│ └── archive/ # Archived completed features
└── AGENTS.md # AI learning notes and feedback commands
Edit .plans/hone.config.yml:
version: 2
agent: claude
claude:
models: {}
opencode:
models: {}
agentsDocsDir: '.agents/'
lintCommand: 'npm run lint' # Optional extra lint commandTo allow Claude Code to run without prompting for every action, add permissions to .claude/settings.json (project-level) or .claude/settings.local.json (personal, gitignored):
{
"permissions": {
"allow": ["Read", "Edit", "Write", "Bash(git *)"]
}
}Task fails
- Failed tasks remain pending and retry on next run
- Check
.plans/progress-<feature>.txtfor error details
Contributions welcome! See claude-plugin/README.md for plugin development details.
MIT
