Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when a repo has no AGENTS.md and an AI coding agent needs onboarding context, or the user asks to generate onboarding files. Produces AGENTS.md (cross-agent), a CLAUDE.md wrapper, and the .aiboarding lifecycle (state, config, hooks). Fallback target when the session-start hook reports missing onboarding files.
.claude/skills/hashgraph-online-create-agent-onboarding/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-23 | ✗→✓ | ▲ Improved | 66% | 0% |
| case-01 | ✗→✓ | ▲ Improved | 664% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 206% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 50% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 105% | 0% |
Treat the AI as a fresh engineer. Generate a compressed, high-signal AGENTS.md at the repo root - the canonical, tool-agnostic onboarding document read natively by Codex, Copilot, Cursor and imported by Claude Code via a thin CLAUDE.md wrapper - then bootstrap the lifecycle that keeps it current.
Announce at start: "Using create-agent-onboarding to generate this repo's onboarding files."
The generation phases below are tool-agnostic and work when this skill runs under Claude Code, Codex, Copilot CLI, or any SKILL.md-compatible agent. Only Phase 6's hook/settings installation is Claude Code-specific: when there is no Claude Code hook runtime (no .claude/ conventions in play and you are not Claude Code), skip the hook and settings steps, still install AGENTS.md, CLAUDE.md, state.json, and config.json, and tell the user drift triage is manual (run update-agent-onboarding after meaningful commits).
Inspect the repo root before generating anything:
AIBOARDING.md exists (legacy v1 layout): stop and run migrate-aiboardinginstead - never regenerate from scratch over an existing onboarding investment.
AGENTS.md already exists: treat it as primary input. Skip greenfieldgrilling; interrogate only the gaps against the section schema below, then propose a restructure as an approval-gated diff. Never overwrite silently.
CLAUDE.md already exists: preserve it. The only changes allowed are addingthe @AGENTS.md import line and managing an aiboarding-owned block via .aiboarding/tools/inject-fenced (marker-fenced, idempotent, removable).
AGENTS.md schema - tool-agnostic, no frontmatter, no Claude-specific syntax. H2 sections in this exact order:
## Project Purpose## Stack and Runtime## Build, Test, Run - exact commands; fast checks and full checks## Architecture Map - directories, boundaries, data flow, dependency direction## Domain Model - entities, workflows, invariants, vocabulary## Agent Guardrails - what agents must NOT assume/refactor/delete/rename/"simplify"## Known Failure Modes - mistakes previous agents made or will likely make## Verification Before Completion - commands agents must run before claiming done## Escalation - Ask the User When - stop-and-ask casesBacktick-quote every command, identifier, file path, and error string - the compression byte-preservation checker treats backtick spans as protected.
CLAUDE.md wrapper - first line @AGENTS.md, then an aiboarding-fenced block of Claude-only workflow notes. Never duplicate AGENTS.md content: imports expand into context at launch, so duplication doubles token cost for zero benefit.
.aiboarding/state.json - operational state, one top-level key per line (hooks read it with a line scanner, not a JSON parser):
json{ "aiboarding_version": 2, "canonical_file": "AGENTS.md", "claude_wrapper": "CLAUDE.md", "generated": "YYYY-MM-DD", "last_synced_commit": "<git rev-parse HEAD>", "receipts": [ ] }
State is committed. Advancing last_synced_commit must never modify AGENTS.md or CLAUDE.md - that separation is what prevents self-referential drift loops.
Run two tracks. A single agent cannot truly act in parallel: perform Track A's file reads first and hold the findings, then immediately open Track B and keep grilling.
Track A - automated discovery (no user input): read dependency manifests (package.json, pyproject.toml, go.mod, Cargo.toml, etc.), the directory structure, CI configs, and any README/docs. Extract tech stack, build/test/run commands, and standard engineering basics. Hold these findings for Phase 3.
Track B - grilling interrogation: open with: > "I'm scanning your codebase structure in the background for the tech stack. While I > do that: what is the core business problem this project solves?" Then walk the conceptual tree one question at a time, challenging vague answers and incentivizing a targeted brain-dump per micro-topic. Do not batch questions.
Steer the grilling toward architecture and AI-specific guardrails. Extract constraints and known AI failure modes, e.g.: > "You mentioned a custom Auth provider. What are the architectural gotchas or AI > failure modes around it that a future sub-agent must not trip over?" Also cover the two sections agents skip most: what must be verified before claiming work done (Verification Before Completion) and which situations demand stopping to ask the user (Escalation). Continue until you have at least one architectural constraint, one AI-specific failure mode or guardrail, one verification command, and one escalation case.
HARD GATE - do not start until BOTH Track A (crawl) and Track B (grilling) are complete. Cross-examine Track A findings against Track B answers. Run a short, final grilling pass focused only on discrepancies, e.g.: > "The crawl found a Postgres connection string, but you didn't mention a database. How > does Postgres fit the core domain, and are there AI constraints here?"
When the reconciliation pass is complete and no open discrepancies remain, combine verified Track A findings with reconciled Track B domain knowledge. Draft AGENTS.md against the schema above. Nothing Claude-specific goes in it; Claude-only workflow notes belong in the CLAUDE.md wrapper block.
Compress the draft by following the compress-onboarding skill: level from config.json (compression_level, default full), Agent Guardrails and Escalation capped at lite, byte-preservation verified with .aiboarding/tools/check-preservation, receipt appended to state.json. Present the compressed document to the user for approval before writing it to the repo root.
After the document is approved and written, install the lifecycle with your own file tools (no shell installer), for cross-platform safety. Every step is idempotent - running create twice must not duplicate hooks, settings entries, or fenced blocks.
<plugin-root>/templates/, where <plugin-root> istwo levels up from this skill. Use ${CLAUDE_PLUGIN_ROOT}/templates if set; otherwise resolve relative to this skill's own directory.
CLAUDE.md: line one @AGENTS.md, then the Claude-notes block viainject-fenced <repo>/CLAUDE.md claude-notes <notes-file>. If CLAUDE.md exists, only add the import line (if absent) and the fenced block.
<repo>/.aiboarding/state.json per the contract abovewith last_synced_commit = current git rev-parse HEAD; copy templates/state/config.json to <repo>/.aiboarding/config.json (keep an existing config); copy templates/state/dot-gitignore to <repo>/.aiboarding/.gitignore.
<repo>/.aiboarding/hooks/ and copy these six files from <plugin-root>/templates/hooks/ verbatim: run-hook.cmd, _lib, session-start, subagent-start, drift-check, instructions-loaded.
<repo>/.aiboarding/tools/ and copy inject-fenced,check-size-budget, check-preservation from <plugin-root>/templates/tools/.
hooks block of<plugin-root>/templates/settings/hooks.json into <repo>/.claude/settings.json, per top-level event. Before adding an entry, check for an existing aiboarding entry for that event (a command containing .aiboarding/hooks/run-hook.cmd) and replace it in place. Remove stale entries pointing at the retired pre-task and post-commit hooks, and delete those files from <repo>/.aiboarding/hooks/ if present.
Do not report success until every check passes; fix and re-check instead of skipping:
AGENTS.md and CLAUDE.md exist; CLAUDE.md contains a line @AGENTS.md.AGENTS.md sections..aiboarding/tools/check-size-budget AGENTS.md passes (no FAIL; resolve WARNs orget the user's explicit OK).
Build, Test, Run and Verification Before Completionresolves against the repo (package scripts, Makefile targets, CI workflows, or a binary on PATH).
state.json:last_synced_commit equals git rev-parse HEAD.and no pre-task/post-commit references.
Then report which files were created or updated and which hook entries were installed. On Windows without Git Bash, tell the user once: hooks will not fire (run-hook.cmd degrades silently), but native CLAUDE.md/AGENTS.md loading still works.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-06 | pass→fail | 11,081 | 11,305 | +2% | 1 | 1 | 0% | 935 | 2,943 | +215% | 0 | 0 | — |
case-23 | fail→pass | 10,037 | 2,097 | -79% | 1 | 1 | 0% | 1,576 | 2,614 | +66% | 0 | 0 | — |
case-01 | fail→pass | 8,082 | 17,489 | +116% | 1 | 1 | 0% | 370 | 2,826 | +664% | 0 | 0 | — |
case-02 | fail→fail | 8,162 | 9,826 | +20% | 1 | 1 | 0% | 401 | 2,975 | +642% | 0 | 0 | — |
case-03 | fail→fail | 7,826 | 2,409 | -69% | 1 | 1 | 0% | 336 | 2,729 | +712% | 0 | 0 | — |
case-04 | fail→fail | 11,108 | 7,199 | -35% | 1 | 1 | 0% | 958 | 2,767 | +189% | 0 | 0 | — |
case-05 | fail→fail | 13,368 | 2,670 | -80% | 1 | 1 | 0% | 1,182 | 2,857 | +142% | 0 | 0 | — |
case-07 | fail→pass | 8,516 | 10,009 | +18% | 1 | 1 | 0% | 1,002 | 3,070 | +206% | 0 | 0 | — |
case-08 | fail→fail | 11,476 | 7,833 | -32% | 1 | 1 | 0% | 2,058 | 3,731 | +81% | 0 | 0 | — |
case-09 | fail→pass | 12,196 | 8,847 | -27% | 1 | 1 | 0% | 2,062 | 3,101 | +50% | 0 | 0 | — |
case-10 | pass→pass | 13,598 | 5,698 | -58% | 1 | 1 | 0% | 2,225 | 3,302 | +48% | 0 | 0 | — |
case-11 | fail→pass | 12,567 | 19,898 | +58% | 1 | 1 | 0% | 1,721 | 3,521 | +105% | 0 | 0 | — |
case-12 | fail→fail | 8,989 | 6,381 | -29% | 1 | 1 | 0% | 1,544 | 3,604 | +133% | 0 | 0 | — |
case-13 | fail→pass | 18,955 | 10,286 | -46% | 1 | 1 | 0% | 2,125 | 3,313 | +56% | 0 | 0 | — |
case-14 | fail→pass | 13,941 | 7,079 | -49% | 1 | 1 | 0% | 2,304 | 3,728 | +62% | 0 | 0 | — |
case-15 | pass→pass | 7,649 | 10,118 | +32% | 1 | 1 | 0% | 1,166 | 3,228 | +177% | 0 | 0 | — |
case-16 | fail→pass | 11,806 | 4,012 | -66% | 1 | 1 | 0% | 1,948 | 3,146 | +61% | 0 | 0 | — |
case-17 | fail→pass | 11,686 | 8,777 | -25% | 1 | 1 | 0% | 2,024 | 4,112 | +103% | 0 | 0 | — |
case-18 | fail→pass | 8,914 | 8,275 | -7% | 1 | 1 | 0% | 1,592 | 3,010 | +89% | 0 | 0 | — |
case-19 | fail→pass | 14,060 | 2,319 | -84% | 1 | 1 | 0% | 2,531 | 2,832 | +12% | 0 | 0 | — |
case-20 | fail→pass | 10,133 | 8,279 | -18% | 1 | 1 | 0% | 1,709 | 2,939 | +72% | 0 | 0 | — |
case-21 | fail→pass | 19,828 | 9,570 | -52% | 1 | 1 | 0% | 2,438 | 3,235 | +33% | 0 | 0 | — |
case-22 | fail→fail | 14,383 | 9,257 | -36% | 1 | 1 | 0% | 1,563 | 3,260 | +109% | 0 | 0 | — |
case-24 | fail→pass | 11,934 | 3,650 | -69% | 1 | 1 | 0% | 1,141 | 2,638 | +131% | 0 | 0 | — |
case-25 | fail→pass | 14,033 | 7,809 | -44% | 1 | 1 | 0% | 1,622 | 2,876 | +77% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 25 cases were attempted. The headline lift of +56 percentage points is the difference between those two pass rates over the 25 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.