Claude Skill

agentify-project

Make a project ready for AI agentic engineering by converging it toward a canonical agent-neutral structure — a lean AGENTS.md index with progressive disclosure, shared skills and gitignore hygiene. Re-runnable, and doubles as an audit.

LLM Mart · 0 points · 12 views 31 listing impressions 0 install-command copies
Virus-scanned Reviewed automatically before listing.

Full trust report

Download eai-org-agent-toolkit-skills_agentify-project-14a71e8.zip · 7 KB
Part of eai-org/agent-toolkit — 24 skills

Install

skills CLI npx skills add https://github.com/eai-org/agent-toolkit/tree/main/skills/agentify-project
Claude Code claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install eai-org-agent-toolkit@llmmart
Git git clone https://github.com/eai-org/agent-toolkit.git

The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole eai-org/agent-toolkit collection as a plugin from our marketplace. Git is the plain clone.

Skill manifest

Agentify project

Converge a project — greenfield or half-way-there — toward the canonical agent-neutral structure specified in references/target-structure.md (read it before the audit), so a team of developers using different agents shares one lean, progressively disclosed setup. Re-running converges further and reports drift.

Invocation: /agentify-project [audit] [path]

  • audit — run step 1 only, print the findings and what a full run would change, modify nothing; the periodic drift check.
  • path — target a subdirectory instead of the repo root (see Monorepos).

Principles

  • Ask, don't enforce: prefer asking — all options shown, one recommended — over enforcing a choice, except for obvious easy wins (e.g. clear progressive-disclosure moves). Questions answerable from the codebase go to the codebase.
  • One approval gate per destructive/bulk change; show diffs or proposals before applying; nothing happens behind the user's back. Never commit — suggest reviewing the diff and leave committing to the user.
  • Generic: behavior is driven by references/agent-matrix.md — read it whenever agent detection or an agent's specifics are needed. One documented exception, the Claude carve-out: a team with no Claude users at all is rare, so Claude wiring (the CLAUDE.md pointer, the .claude/skills/ links, the Claude gitignore entries) is applied unconditionally, never detection-gated.

1. Audit (read-only)

  • Detect each target-structure area's state, and which agents are in use by their traces (matrix).
  • Warn — never block — if the git working tree is dirty, so the user can commit first and keep the restructure reviewable as an isolated diff.
  • Detect nested entry files (monorepo packages).
  • Diff duplicated entry files (agents without include syntax) against AGENTS.md; divergence becomes a re-sync menu item — the one artifact class guaranteed to drift.
  • Detect Claude-only assets (.claude/commands/, .claude/agents/, .claude/rules/): report, leave. Flag .claude/rules/ content as candidate governing-doc material (path-scoped rules are a Claude-specific disclosure mechanism); legacy commands may get a one-off note that they could become skills — the conversion itself is out of scope.
  • Record entry-file line counts: menu annotations now, coarse before-figure for /context-checkup later.

Done when every target-structure area has a detected state and every agent trace found is accounted for.

2. Menu

Multi-select over the applicable change areas only — entry-file indirection, AGENTS.md slimming into docs, skills relocation + symlinks, gitignore hygiene, planning dir, onboarding doc, README pointer — each annotated with audit findings (e.g. "CLAUDE.md, 180 lines, no AGENTS.md → indirection + slimming"). "All" is the first and recommended option. Report already-converged areas ✓ and omit them from the choices. Every area is independently skippable: a team may deliberately stay Claude-only (no multi-agent support) — then apply the selected areas within the Claude-only variant in target-structure.md.

3. Execute — live, step by step

Apply each accepted area immediately, behind its approval gate — no migration-plan artifact: the moves are mostly mechanical, and re-running converges. Suggested order: entry files → slimming/docs → skills → gitignore → extras.

Entry files. Invariant covering every starting state: the content of all existing entry files — any agent's, including a divergent CLAUDE.md + AGENTS.md pair — feeds the slimming mapping; AGENTS.md ends canonical; every detected entry file ends as a pointer (or duplicated content, per matrix), CLAUDE.md always included. Common case (CLAUDE.md exists, no AGENTS.md): rename it to AGENTS.md — git detects the rename — and recreate CLAUDE.md as @AGENTS.md plus any genuinely Claude-specific remainder. AGENTS.md-only and third-party-only repos: same invariant — create the missing pointer(s), seed AGENTS.md from whatever entry-file content exists. Greenfield (no entry file of any agent): minimal seed from cheap reconnaissance (README, package manifest / build files) — one-liner, verified build/test/run commands, planning-dir convention — plus the pointer; deep doc generation is out of scope, the structure grows later via /self-improve and /memory-doctor.

Slimming (mapping-first). Draft one full mapping: each block → stays / moves to existing doc X / new doc Y, applying the keep-vs-extract test (target-structure §1); where a block's relevance is verifiable from the codebase, check the code instead of asking. Present the mapping with obvious calls pre-decided; walk only doubtful blocks as individual questions, each with a recommendation, worded via explain-in-simple-language when available; one approval gate before any edit. Offer a compaction pass on blocks that stay; write extracted docs compact from birth — via compact-docs-writer when installed, else inline with its core principle (least text, zero information loss). Each extracted doc gets a plain-link index entry in AGENTS.md with its "read when…" hook.

Skills. Move real dirs, create relative symlinks (committed), per matrix; leave foreign/personal links untouched and report them.

Gitignore. Show the proposed block as a diff; apply on approval.

Extras. Planning dir + AGENTS.md convention line; onboarding doc; README pointer.

Done when every selected area is applied or explicitly skipped by the user.

4. Verify (mechanical)

Every AGENTS.md reference resolves; symlinks point at real dirs; git check-ignore confirms each ignore entry; CLAUDE.md pointer intact; duplicated entry files match AGENTS.md. Close with a short converged-state report of what changed.

5. Close

Suggest, each only when installed and applicable — skip silently otherwise:

  • /memory-doctor — when the agent accumulates project memory (e.g. auto memory) — to relocate saved lessons into the new docs structure and share them with the team; it no-ops harmlessly on empty memory, so no content check is needed.
  • /context-checkup — measure what now auto-loads, with the audit's entry-file line counts as the coarse before-figure.

Monorepos

Full treatment targets the repo root. Nested entry files are offered only the cheap mechanical indirection (nested CLAUDE.md → nested AGENTS.md + pointer); defer nested slimming to a re-run with that subdirectory as the path argument.

Files (agent-toolkit)
  • references
    • agent-matrix.md 2.7 KB
      # Agent matrix
      
      What agentify-project knows about each agent. Deliberately not a pre-researched database: only the
      Claude row ships verified. Any other agent's facts are researched **at runtime** against that
      agent's current official docs, only when the agent is detected (or named by the user) and a
      selected area needs its specifics. Confirm research findings with the user before use;
      inconclusive research means ask — never guess. Persist recipes that matter to teammates in the
      project's onboarding doc.
      
      ## Columns
      
      | Column | Content |
      | --- | --- |
      | Agent | Name |
      | Detection traces | Files/dirs that indicate the agent is used in this repo |
      | Entry file(s) | e.g. CLAUDE.md, GEMINI.md, `.github/copilot-instructions.md` |
      | Include syntax | The pointer mechanism, or "none → duplicate content" |
      | Project skills dir | e.g. `.claude/skills/`; or "reads `.agents/skills` natively → no link" |
      | Gitignore entries | Agent-specific artifact dirs/files worth ignoring |
      
      ## Verified rows
      
      | Agent | Detection traces | Entry file(s) | Include syntax | Project skills dir | Gitignore entries |
      | --- | --- | --- | --- | --- | --- |
      | Claude Code | `CLAUDE.md`, `.claude/` | `CLAUDE.md` (reads it, **not** AGENTS.md) | `@AGENTS.md` import; Claude-specific lines may follow it | `.claude/skills/` | `.claude/plans/**`, `.claude/worktrees/**`, `.claude/settings.local.json`, `.claude/__pycache__`, `CLAUDE.local.md` |
      
      Claude notes (verified against the official memory docs, 2026-08):
      
      - `@` imports load at launch — recursive, max 4 hops, relative to the containing file — and do
        **not** reduce context; hence AGENTS.md references docs with plain links, never imports. Only
        `@`-prefixed paths import; backticked paths do not.
      - Windows symlinks need admin/Developer Mode, so the `@AGENTS.md` import beats a symlink as the
        default CLAUDE.md pointer.
      - `.claude/rules/` (path-scoped via `paths:` frontmatter) and nested CLAUDE.md files are
        Claude-specific progressive disclosure — rules content is candidate material for governing docs.
      
      ## Detection traces to scan for
      
      Well-known traces of agents commonly met — indicative starting points, not a research checklist:
      
      | Agent | Traces |
      | --- | --- |
      | GitHub Copilot | `.github/copilot-instructions.md` |
      | Cursor | `.cursorrules`, `.cursor/` |
      | Gemini CLI | `GEMINI.md`, `.gemini/` |
      | Windsurf | `.windsurfrules`, `.windsurf/` |
      | Cline | `.clinerules` |
      | OpenCode | `opencode.json`, `.opencode/` |
      
      Codex, Kimi Code, Amp and others may leave no unique project trace (several agents read the
      neutral AGENTS.md natively); when the user names one, research it like any detected agent.
      AGENTS.md itself is agent-neutral — never treat it as a trace.
      
    • target-structure.md 5.1 KB
      # Target structure
      
      The converged end state agentify-project measures against and converges toward. The audit detects
      each area's state; the menu offers the gaps.
      
      ## 1. AGENTS.md — canonical lean index
      
      At repo root (plural, per the agents.md convention). Maximally lean — only the irreducible
      minimum: project one-liner, universal build/test/run commands, hard structural constraints
      (layout, module boundaries), the linked docs index, and the planning-dir convention.
      Keep-vs-extract test per block: *part of that minimum?* Everything else — even generic categories
      nearly every session reads (testing, conventions, architecture, …) — gets its own governing doc:
      often-loaded linked docs are fine, a fat entry file is not. Reference docs as **plain markdown
      links with a one-line "read when…" hook each**. Guiding reference for leanness:
      https://www.aihero.dev/a-complete-guide-to-agents-md
      
      Never reference docs with `@import` syntax: some agents load `@` imports at launch, recursively,
      which would silently defeat progressive disclosure (see the Claude row in
      [agent-matrix.md](agent-matrix.md)). Only `@`-prefixed paths are imports — plain paths and
      markdown links never import; to mention an `@path` literally, wrap it in backticks.
      
      ## 2. CLAUDE.md — pointer
      
      Contains `@AGENTS.md`. Mandatory, not transitional, and never detection-gated (Claude carve-out):
      Claude Code reads CLAUDE.md, **not** AGENTS.md, and its official docs recommend exactly this
      pointer. Genuinely Claude-only instructions may legitimately stay below the import (official
      pattern) — preserve them there instead of force-moving. A CLAUDE.md→AGENTS.md symlink also works
      but needs Developer Mode on Windows and forbids Claude-specific additions, so the import is the
      default.
      
      ## 3. Other agents' entry files — detect and convert only
      
      GEMINI.md, `.github/copilot-instructions.md`, `.cursorrules`, `.cursor/rules`, …: convert files
      already present in the repo into pointers to AGENTS.md using that agent's include syntax, or
      duplicated content where includes are unsupported (per matrix). Never scaffold an entry file for
      an agent with no traces in the repo.
      
      ## 4. Governing docs
      
      New agent-facing docs default to `.agents/docs/`; the location is always confirmed with the user.
      Content-driven — a doc exists only when content exists for it (blocks extracted from entry files,
      or relocated later via `/memory-doctor`). During extraction, propose a standard taxonomy as
      candidate homes (architecture, conventions, testing, workflow, …) but **never create an empty
      stub**. Existing docs elsewhere (`docs/architecture.md`, `CONTRIBUTING.md`, …) are never moved
      silently: ask, showing all options — reference in place / consolidate into `.agents/docs/` — with
      a recommendation; referencing in place is the usual one, progressive disclosure does not care
      about the path.
      
      ## 5. Skills
      
      Canonical dirs at `.agents/skills/<name>/`, plus committed **relative symlinks, one per skill**
      (per-skill choice; Claude-only skills can coexist):
      
      - `.claude/skills/<name>` → always (Claude carve-out).
      - Other agents' project-level skills dirs → only for detected agents, per matrix; agents that
        read `.agents/skills` natively need no link.
      - Existing real skill dirs under `.claude/skills/` move to `.agents/skills/` and are replaced by
        symlinks. Symlinks pointing **outside** the repo (personal installs, e.g. into `~/.agents`) are
        left alone and merely reported.
      
      The Windows symlink caveat is documented once, in the onboarding doc (§8).
      
      ## 6. .gitignore
      
      Agent-neutral baseline (`.agents/plans/**`) plus per-agent artifact entries from the matrix —
      Claude's always (carve-out), other agents' only when detected. Always presented as a diff for
      approval.
      
      ## 7. Planning directory
      
      `.agents/plans/`, gitignored, with AGENTS.md stating the convention so every teammate's agent
      saves plans to the same place. Converged = gitignore entry + AGENTS.md convention line, **not**
      directory existence: an empty gitignored dir never reaches teammates' clones, so create the dir
      opportunistically when missing.
      
      ## 8. Team onboarding doc
      
      In the governing-docs dir: the layout explained; hookup recipes for the agents wired so far
      (accumulated from the skill's runtime research); a generic recipe for any other agent — point it
      at AGENTS.md via its entry-file mechanism, or re-run `/agentify-project` to research and wire it —
      which keeps detect-only from becoming a chicken-and-egg trap for agents with no repo traces yet;
      and the Windows symlink caveat (git `core.symlinks` + Developer Mode).
      
      ## 9. README pointer
      
      A two-line section in README.md linking to the onboarding/layout doc, so humans who never open
      hidden dirs can discover the structure.
      
      ## Claude-only variant
      
      A team may deliberately stay Claude-only; the selected areas then apply within that layout:
      CLAUDE.md stays the canonical index (same slimming rules and plain-link references), the skills
      area is not applicable (real dirs stay under `.claude/skills/`), the planning dir defaults to
      `.claude/plans/`, and doc locations are confirmed with the user with a Claude-conventional
      default (e.g. `docs/` or `.claude/docs/`).
      
  • SKILL.md 6.8 KB
    ---
    name: agentify-project
    description: Make a project ready for AI agentic engineering by converging it toward a canonical agent-neutral structure — a lean AGENTS.md index with progressive disclosure, shared skills and gitignore hygiene. Re-runnable, and doubles as an audit.
    disable-model-invocation: true
    type: flow
    license: MIT
    metadata:
      version: "0.2"
    ---
    
    # Agentify project
    
    Converge a project — greenfield or half-way-there — toward the canonical agent-neutral structure
    specified in [references/target-structure.md](references/target-structure.md) (read it before the
    audit), so a team of developers using different agents shares one lean, progressively disclosed
    setup. Re-running converges further and reports drift.
    
    Invocation: `/agentify-project [audit] [path]`
    
    - `audit` — run step 1 only, print the findings and what a full run would change, modify nothing;
      the periodic drift check.
    - `path` — target a subdirectory instead of the repo root (see Monorepos).
    
    ## Principles
    
    - **Ask, don't enforce**: prefer asking — all options shown, one recommended — over enforcing a
      choice, except for obvious easy wins (e.g. clear progressive-disclosure moves). Questions
      answerable from the codebase go to the codebase.
    - One approval gate per destructive/bulk change; show diffs or proposals before applying; nothing
      happens behind the user's back. Never commit — suggest reviewing the diff and leave committing
      to the user.
    - Generic: behavior is driven by [references/agent-matrix.md](references/agent-matrix.md) — read
      it whenever agent detection or an agent's specifics are needed. One documented exception, the
      **Claude carve-out**: a team with no Claude users at all is rare, so Claude wiring (the
      CLAUDE.md pointer, the `.claude/skills/` links, the Claude gitignore entries) is applied
      unconditionally, never detection-gated.
    
    ## 1. Audit (read-only)
    
    - Detect each target-structure area's state, and which agents are in use by their traces (matrix).
    - Warn — never block — if the git working tree is dirty, so the user can commit first and keep
      the restructure reviewable as an isolated diff.
    - Detect nested entry files (monorepo packages).
    - Diff duplicated entry files (agents without include syntax) against AGENTS.md; divergence
      becomes a re-sync menu item — the one artifact class guaranteed to drift.
    - Detect Claude-only assets (`.claude/commands/`, `.claude/agents/`, `.claude/rules/`): report,
      leave. Flag `.claude/rules/` content as candidate governing-doc material (path-scoped rules are
      a Claude-specific disclosure mechanism); legacy commands may get a one-off note that they could
      become skills — the conversion itself is out of scope.
    - Record entry-file line counts: menu annotations now, coarse before-figure for
      `/context-checkup` later.
    
    Done when every target-structure area has a detected state and every agent trace found is
    accounted for.
    
    ## 2. Menu
    
    Multi-select over the applicable change areas only — entry-file indirection, AGENTS.md slimming
    into docs, skills relocation + symlinks, gitignore hygiene, planning dir, onboarding doc, README
    pointer — each annotated with audit findings (e.g. "CLAUDE.md, 180 lines, no AGENTS.md →
    indirection + slimming"). **"All" is the first and recommended option.** Report already-converged
    areas ✓ and omit them from the choices. Every area is independently skippable: a team may
    deliberately stay Claude-only (no multi-agent support) — then apply the selected areas within the
    Claude-only variant in target-structure.md.
    
    ## 3. Execute — live, step by step
    
    Apply each accepted area immediately, behind its approval gate — no migration-plan artifact: the
    moves are mostly mechanical, and re-running converges. Suggested order: entry files →
    slimming/docs → skills → gitignore → extras.
    
    **Entry files.** Invariant covering every starting state: the content of **all** existing entry
    files — any agent's, including a divergent CLAUDE.md + AGENTS.md pair — feeds the slimming
    mapping; AGENTS.md ends canonical; every detected entry file ends as a pointer (or duplicated
    content, per matrix), CLAUDE.md always included. Common case (CLAUDE.md exists, no AGENTS.md):
    rename it to AGENTS.md — git detects the rename — and recreate CLAUDE.md as `@AGENTS.md` plus any
    genuinely Claude-specific remainder. AGENTS.md-only and third-party-only repos: same invariant —
    create the missing pointer(s), seed AGENTS.md from whatever entry-file content exists. Greenfield
    (no entry file of any agent): minimal seed from cheap reconnaissance (README, package manifest /
    build files) — one-liner, **verified** build/test/run commands, planning-dir convention — plus
    the pointer; deep doc generation is out of scope, the structure grows later via `/self-improve`
    and `/memory-doctor`.
    
    **Slimming (mapping-first).** Draft one full mapping: each block → stays / moves to existing doc
    X / new doc Y, applying the keep-vs-extract test (target-structure §1); where a block's relevance
    is verifiable from the codebase, check the code instead of asking. Present the mapping with
    obvious calls pre-decided; walk **only doubtful blocks** as individual questions, each with a
    recommendation, worded via `explain-in-simple-language` when available; one approval gate before
    any edit. Offer a compaction pass on blocks that stay; write extracted docs compact from birth —
    via `compact-docs-writer` when installed, else inline with its core principle (least text, zero
    information loss). Each extracted doc gets a plain-link index entry in AGENTS.md with its "read
    when…" hook.
    
    **Skills.** Move real dirs, create relative symlinks (committed), per matrix; leave
    foreign/personal links untouched and report them.
    
    **Gitignore.** Show the proposed block as a diff; apply on approval.
    
    **Extras.** Planning dir + AGENTS.md convention line; onboarding doc; README pointer.
    
    Done when every selected area is applied or explicitly skipped by the user.
    
    ## 4. Verify (mechanical)
    
    Every AGENTS.md reference resolves; symlinks point at real dirs; `git check-ignore` confirms each
    ignore entry; CLAUDE.md pointer intact; duplicated entry files match AGENTS.md. Close with a
    short converged-state report of what changed.
    
    ## 5. Close
    
    Suggest, each only when installed and applicable — skip silently otherwise:
    
    - `/memory-doctor` — when the agent accumulates project memory (e.g. auto memory) — to relocate
      saved lessons into the new docs structure and share them with the team; it no-ops harmlessly on
      empty memory, so no content check is needed.
    - `/context-checkup` — measure what now auto-loads, with the audit's entry-file line counts as
      the coarse before-figure.
    
    ## Monorepos
    
    Full treatment targets the repo root. Nested entry files are offered only the cheap mechanical
    indirection (nested CLAUDE.md → nested AGENTS.md + pointer); defer nested slimming to a re-run
    with that subdirectory as the `path` argument.
    

Comments (0)

Sign in to join the conversation.

No comments yet.

Reviews (0)

No reviews yet.

Related