Agent skill

Project Discovery

by testdouble in testdouble/han

Discovers the core attributes of the current code repository and its projects — languages, frameworks, tooling, and where things live — and writes a concise reference section directly into the…

MITAuto-check passedAgent Workflows

Install Project Discovery

skills CLI
$ npx skills add testdouble/han --skill project-discovery -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install testdouble/han project-discovery --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/testdouble/han.git skills-src && mkdir -p .claude/skills && cp -r skills-src/han-core/skills/project-discovery .claude/skills/project-discovery && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
project-discovery
GitHub stars
279
Token cost
~2k tokens
SKILL.md length
1,044 words
Files
2 (incl. references)
Skills in repo
54
Repo updated
First seen
Licence
MIT

At a glance

Discovers the core attributes of the current code repository and its projects — languages, frameworks, tooling, and where things live — and writes a concise reference section directly into the…

  • Works in 6 steps: Choose and read the target file → Discover repository structure → Explore project attributes → …
  • Detecting the projects technology stack
  • SKILL.md covers Project Context, Step 1: Choose and read the…, Step 2: Discover repository… and Step 3: Explore project…, plus 3 more sections
  • Calls git, bash and make

What it does

Project Discovery is an agent skill from testdouble/han. Discovers the core attributes of the current code repository and its projects — languages, frameworks, tooling, and where things live — and writes a concise reference section directly into the project's AGENTS.md or CLAUDE.md for other skills, agents, and hooks to consume. Use when scanning, analyzing, or detecting the project's technology stack, build tools, or repository structure. Does not create or update project documentation — use project-documentation for writing feature or system docs.

Its SKILL.md is about 2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/template.md`).

It sits in Agent Workflows, covering Agent instruction files. The repository describes itself as: Han: AI skills and agents for "Solo" product engineers and small teams. The licence is MIT.

When your agent uses it

  • Detecting the projects technology stack
  • Repository structure

Example prompts

  • “Use the project-discovery skill to discover the core attributes of the current code repository and its projects — languages, frameworks, tooling…”
  • “/project-discovery”

Requirements

  • Pre-approved tools (allowed-tools): Read, Write, Edit, Glob, Grep, Agent, Bash(git symbolic-ref *), Bash(find *), Bash(bash "${CLAUDE_PLUGIN_ROOT}/scripts/han-config-dir.sh")

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Choose and read the target file
  2. Discover repository structure
  3. Explore project attributes
  4. Write the discovery into the target file
  5. Keep the .han/config.md pointer honest
  6. Verification

What it can do on your machine

Read from SKILL.md and the folder at commit abba73a. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Write
    • Edit
    • Glob
    • Grep
    • Agent
    • Bash(git symbolic-ref *)
    • Bash(find *)
    • Bash(bash "${CLAUDE_PLUGIN_ROOT}/scripts/han-config-dir.sh")

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • git
    • bash
    • make

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Project Discovery loads about 2k tokens when it runs, and up to ~2.4k if it reads all its reference files. Until then it costs about 129 tokens; SKILL.md has 1,044 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~129
When it runs · the whole SKILL.md, loaded when a task matches
~2k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~2.4k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from testdouble/han at commit abba73a, republished under its MIT licence (© testdouble). 1,044 words, ~2,004 tokens.

Download SKILL.mdSave it as .claude/skills/project-discovery/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
project-discovery
description
Discovers the core attributes of the current code repository and its projects — languages, frameworks, tooling, and where things live — and writes a concise reference section directly into the project's AGENTS.md or CLAUDE.md for other skills, agents, and hooks to consume. Use when scanning, analyzing, or detecting the project's technology stack, build tools, or repository structure. Does not create or update project documentation — use project-documentation for writing feature or system docs.
allowed-tools
Read, Write, Edit, Glob, Grep, Agent, Bash(git symbolic-ref *), Bash(find *), Bash(bash "${CLAUDE_PLUGIN_ROOT}/scripts/han-config-dir.sh")

Project Context

  • Default branch: !git symbolic-ref --short refs/remotes/origin/HEAD 2>/dev/null || echo unknown
  • AGENTS.md: !find . -maxdepth 1 -name "AGENTS.md" -type f
  • CLAUDE.md: !find . -maxdepth 1 -name "CLAUDE.md" -type f
  • README: !find . -maxdepth 1 -name "README*" -type f
  • personal config directory: !bash "${CLAUDE_PLUGIN_ROOT}/scripts/han-config-dir.sh" 2>/dev/null || echo "$HOME/.claude"
  • project .han/config.md: !cat .han/config.md 2>/dev/null || echo ""

As your first action, use the Read tool on .han/config.md inside the personal config directory path above. A read that returns no file is no personal configuration: continue silently. When that file or the project .han/config.md probe supplies content, apply it per config-rule.md, which governs precedence between the two files, relative-path resolution, and what to do with a file that reads but cannot be used.

Project Discovery

This skill discovers the project's core attributes and writes them as a concise ## Project Discovery section directly into the project's AGENTS.md or CLAUDE.md — not a separate file. The output is small by design: a few notes on where things live, the languages and frameworks, and the commands to run, so an AI agent working in the repo can find its way around. It is not an exhaustive inventory.

Step 1: Choose and read the target file

Pick the single file this discovery is written into, by priority:

  1. If AGENTS.md exists (the label above is non-empty), the target is AGENTS.md.
  2. Otherwise, if CLAUDE.md exists, the target is CLAUDE.md.
  3. If neither exists, the target is a new CLAUDE.md at the repository root, which you will create in Step 4.

If the target file already exists, read it in full and build the deduplication baseline: a list of everything the file already documents that this skill would otherwise write — directory and folder locations, languages, frameworks, package manager, build/test/lint/dev commands, and the docs, ADR, and coding-standards directories. Note whether the file already has a ## Project Discovery section.

If the target is a new CLAUDE.md, there is nothing to deduplicate against.

Step 2: Discover repository structure

Launch a han-core:project-scanner agent to determine whether the repository contains one project or many, and what each project's boundaries are. Wait for the agent to complete.

From the agent's results, build a project list. Each entry has a project name (directory name, or repository name for a root-level project), root path, and dependency manifest path.

Step 3: Explore project attributes

Launch 3 han-core:project-scanner agents in parallel, each with a different focus area. Include the project list from Step 2 in each agent's prompt so they know which roots to explore. Keep each agent on the core facts an AI agent needs to navigate and run the project — not an exhaustive catalog of every config file.

Agent 1 — Languages and Frameworks: For each project, read the dependency manifest to identify languages and version constraints. Determine the package manager from the lock file type. From dependencies, identify the structural/architectural frameworks that define how the project is built (web, frontend, test, ORM/database). Ignore utility packages. Note runtime version requirements.

Agent 2 — Commands: For each project, find the task runner or build definition and extract the actual commands for installing dependencies, running tests, linting, building, and the dev server. Only record commands that actually exist — no guesses.

Agent 3 — Layout: Map where the important things live: the main source directory or directories, the test location, and the documentation, ADR, and coding-standards directories — do not assume names like "docs". Capture only the handful of directories someone needs to know to find their way around the repo; skip incidental files.

After all 3 agents complete, merge their findings, deduplicate across agents, and organize by project. Separate repository-level items (default branch, docs, ADRs, coding standards, layout) from project-level items (language, frameworks, package manager, commands).

Show full SKILL.md (437 more words)Show less

Step 4: Write the discovery into the target file

Build a concise ## Project Discovery section using the template at template.md as the structural guide.

Apply two filters before writing anything:

  • Deduplicate. Drop every fact already present in the target file (the Step 1 baseline). Do not restate what the file already says, even in different words.
  • Drop empties. Omit any line with no discovered value. Never leave a {placeholder} behind, and never invent a command or path that was not discovered.

If a discovered fact contradicts what the file already states (for example, the file says make test but no Makefile was discovered), use AskUserQuestion to surface the contradiction and ask which is correct — the existing file or the filesystem discovery. Update the content based on the answer.

Then write the result into the target file:

  • Target exists, no ## Project Discovery section: append the section at the end of the file (or another sensible location).
  • Target exists, already has a ## Project Discovery section: replace that section's body with the new, deduplicated content. Do not leave the old content alongside the new.
  • Neither AGENTS.md nor CLAUDE.md exists: create CLAUDE.md at the repository root containing the section.

If, after deduplication, nothing meaningful remains to add, do not write an empty section. Tell the user the target file already covers the project's core attributes, and stop.

Step 5: Keep the .han/config.md pointer honest

Han skills read project-local overrides from the project's .han/config.md when a project carries one (see ../../references/config-rule.md). This step keeps the target file's pointer to that config accurate, using the same consent gate and deduplication discipline as Step 4. The Project Context probe above shows whether the file exists.

  • .han/config.md exists and the target file contains no reference to it: use AskUserQuestion to offer adding a one-line pointer beside the ## Project Discovery section, for example: Han skills in this project read overrides from [.han/config.md](./.han/config.md). Never add a pointer when any reference to the file is already present, even phrased differently.
  • .han/config.md does not exist but the target file still references it: use AskUserQuestion to offer removing the stale pointer.
  • Otherwise: do nothing and say nothing about the config.

Write or remove the pointer only with the user's consent.

Step 6: Verification

Read back the target file's ## Project Discovery section. Confirm: no {placeholder} text remains, every bullet has a real discovered value, and nothing duplicates content stated elsewhere in the file. Spot-check 2-3 discovered paths or directories with Glob to confirm they exist.

Report to the user: the target file written (and whether it was created or updated), the number of projects discovered, and the languages and frameworks found.

© testdouble, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (references) in han-core/skills/project-discovery of testdouble/han.

  • SKILL.md
  • references/template.md

Open the folder on GitHubat commit abba73a

Compare with similar skills

Project Discovery next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Project Discovery compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Project Discovery this skilltestdouble/han279—~2kAutomated safety check: PassMIT
Using Agent Skillsaddyosmani/agent-skills102k4 repos~2.4kAutomated safety check: PassMIT
Claude ReflectBayramAnnakov/claude-reflect1.7k2 repos~627Automated safety check: PassMIT
Neat-Freak Knowledge CloseoutKKKKhazix/khazix-skills21k—~1.9kAutomated safety check: PassMIT
Task Observerrebelytics/one-skill-to-rule-them-all3.2k1 repos~12kAutomated safety check: PassCC-BY-4.0
Writing For Agentsbestofjs/bestofjs3.1k17 repos~2.7kAutomated safety check: PassMIT

Similar skills

  • Using Agent Skills

    addyosmani/agent-skills

    Meta-skill for choosing which workflow skill fits the task at hand, plus always-on habits: surface assumptions, stop on confusion, push back, keep it simple and stay in scope.

    102k GitHub starsUsed in 4 repos~2.4k tokens
    Agent WorkflowsAuto-check passed
  • Claude Reflect

    BayramAnnakov/claude-reflect

    Self-learning system that captures corrections during sessions and reminds users to run /reflect to update CLAUDE.md.

    1.7k GitHub starsUsed in 2 repos~627 tokens
    Agent WorkflowsAuto-check passed
  • Neat-Freak Knowledge Closeout

    KKKKhazix/khazix-skills

    Brings project docs, agent rule files, authorized memory and leftover workspace files back in line with what the code and runtime actually do at the end of a work session.

    21k GitHub stars~1.9k tokensUpdated 6 days ago
    Agent WorkflowsAuto-check passed
  • Task Observer

    rebelytics/one-skill-to-rule-them-all

    Monitors task execution for skill improvement opportunities.

    3.2k GitHub starsUsed in 1 repo~12k tokens
    Agent WorkflowsAuto-check passed
  • Writing For Agents

    bestofjs/bestofjs

    Writing documents for agents. An agent skill from bestofjs/bestofjs.

    3.1k GitHub starsUsed in 17 repos~2.7k tokens
    Agent WorkflowsAuto-check passed
  • SkillOpt Sleep Cycle

    microsoft/SkillOpt

    Official

    Runs an on-demand or nightly sleep cycle that reviews past Claude Code sessions and proposes validated updates to CLAUDE.md and skills.

    18k GitHub stars~2.3k tokensUpdated yesterday
    Agent WorkflowsAuto-check passed

More from testdouble/han

All 54 skills in this repo
  • HTML Summary

    testdouble/han

    Convert a stakeholder summary markdown file into a single self-contained HTML executive report — bottom line and decision asks up front, supporting detail later — styled with a Test Double-derived…

    279 GitHub stars~2.9k tokensUpdated 6 days ago
    Auto-check passed
  • Update Han plugin documentation so every skill, agent, guidance doc, index, and cross-reference is current and accurate.

    279 GitHub stars~3.4k tokensUpdated 6 days ago
    Auto-check passed
  • Guidance

    testdouble/han

    Authoritative guidance for building Claude Code skills, agents, and plugins, plus init and update steps that install and refresh the plugin-building skills in the current repository.

    279 GitHub stars~1.8k tokensUpdated 6 days ago
    Auto-check passed
  • Han Release

    testdouble/han

    Cut a Han release: update CHANGELOG.md with the changes since the last release, bump and tag every plugin that changed as {plugin-name}--v{version} so a version-constrained dependency can resolve…

    279 GitHub stars~8.6k tokensUpdated 6 days ago
    Auto-check passed
  • Plan Implementation

    testdouble/han

    Builds a feature implementation plan from an existing feature specification (or equivalent context) through a facilitated team conversation.

    279 GitHub stars~9.5k tokensUpdated 6 days ago
    Auto-check passed
  • Refactor

    testdouble/han

    Restructure existing code without changing its behavior, through a test-gated refactoring loop: a named target, a green suite over that target before any edit, a planned sequence of small named…

    279 GitHub stars~3.1k tokensUpdated 6 days ago
    Auto-check passed

Categories

Questions about Project Discovery

What does Project Discovery do?

Discovers the core attributes of the current code repository and its projects — languages, frameworks, tooling, and where things live — and writes a concise reference section directly into the…. Project Discovery is an agent skill from testdouble/han.md for other skills, agents, and hooks to consume.

When should I use Project Discovery?

Project Discovery fits situations like: detecting the projects technology stack; repository structure.

How do I install Project Discovery in Claude Code?

Run `npx skills add testdouble/han --skill project-discovery -a claude-code`. Or copy the skill folder (han-core/skills/project-discovery in testdouble/han) into .claude/skills/project-discovery in your project. Claude Code loads it when a task matches its description.

How do I install Project Discovery in Codex?

Run `npx skills add testdouble/han --skill project-discovery -a codex`. Or copy the skill folder (han-core/skills/project-discovery in testdouble/han) into .agents/skills/project-discovery in your project. Codex loads it when a task matches its description.

Can I use Project Discovery in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add testdouble/han --skill project-discovery -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/project-discovery, .gemini/skills/project-discovery, .github/skills/project-discovery and .opencode/skills/project-discovery in your project.

What does Project Discovery need to run?

Going by SKILL.md and its folder, Project Discovery needs the command-line tools its instructions call (git, bash and make). Its frontmatter pre-approves these tools: Read, Write, Edit, Glob, Grep, Agent, Bash(git symbolic-ref *), Bash(find *), Bash(bash "${CLAUDE_PLUGIN_ROOT}/scripts/han-config-dir.sh").

Does Project Discovery access the network?

SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Project Discovery safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Project Discovery use?

Project Discovery is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Project Discovery use?

About 2k tokens (SKILL.md is roughly 8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 393 tokens, read only when the agent opens those files.

What are the alternatives to Project Discovery?

Skills that share tags, products or a category with Project Discovery: Using Agent Skills (addyosmani/agent-skills, 102k stars), Claude Reflect (BayramAnnakov/claude-reflect, 1.7k stars), Neat-Freak Knowledge Closeout (KKKKhazix/khazix-skills, 21k stars) and Task Observer (rebelytics/one-skill-to-rule-them-all, 3.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Project Discovery?

testdouble (a GitHub organization) maintains it in testdouble/han, which has 279 GitHub stars. The repository holds 54 skills in this directory. The repository was last updated on October 1, 2026.

Source: testdouble/han on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.