Skip to content
Agentmart
Submit a tool

survey

Produces a fast architecture survey for an existing codebase without reading source implementation files.

Skill by specscore

IndexedMIT
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/specscore-survey

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Produces a fast architecture survey for an existing codebase without reading source implementation files. Scans the file tree, reads only allowlisted structural manifests, writes JSON-first survey artifacts under spec/research/, and stages the results. Use before retrofit or when the user wants a cheap architecture overview of an existing repo. Trigger: "specstudio:survey", "/survey", "/specstudio:survey", "survey this repo", "architecture survey", "map this repo".

Use cases: research

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/survey

What's inside

Skill name
survey
Description
Produces a fast architecture survey for an existing codebase without reading source implementation files. Scans the file tree, reads only allowlisted structural manifests, writes JSON-first survey artifacts under spec/research/, and stages the results. Use before retrofit or when the user wants a cheap architecture overview of an existing repo. Trigger: "specstudio:survey", "/survey", "/specstudio:survey", "survey this repo", "architecture survey", "map this repo".
License
MIT
Instructions
285 lines in SKILL.md · view on GitHub

Files (1)

  • SKILL.md

SKILL.md (first lines)

# Survey

Produce a fast architecture survey of the current repository without reading source implementation files.

## Hard Gate

<HARD-GATE>
This skill MUST NOT read source implementation file contents. It may list source file paths and count them, but it must not open implementation files such as `*.js`, `*.ts`, `*.py`, `*.go`, `*.rs`, `*.java`, `*.cs`, `*.rb`, `*.php`, `*.swift`, or `*.kt`, unless the file is explicitly allowed as a structural manifest below.

The output is research, not canonical Feature intent. Do not write Feature, Plan, or code artifacts from this skill. Do not invoke `specstudio:retrofit` automatically.
</HARD-GATE>

## When To Use

- A user wants a cheap architecture overview of an existing repository.
- A user is deciding whether retrofit is worth running.
- A future `specstudio:retrofit` run needs a `survey-output-schema-v1` input.

Skip when the user wants behavior, requirements, or acceptance criteria derived from code. That is retrofit, not survey.

## Inputs and flags

Supported invocations:

- `specstudio:survey`
- `specstudio:survey --scope <subdir>`
- `specstudio:survey --slug <slug>`
- `specstudio:survey --output-dir <path>`
- `specstudio:survey --json`

Flag behavior:

- `--scope <subdir>` limits the file inventory and manifest reads to that subtree, while repo state still records the whole-repo HEAD.
- `--slug <slug>` overrides slug derivation.
- `--output-dir <path>` overrides the default `spec/research/`.
- `--json` writes only the JSON artifact and skips Markdown rendering.

Unknown flags are refused.

## Step 1 - Pre-flight

1. Determine repo root with `git rev-parse --show-toplevel`. If that fails, use the current directory and record `git_available: false`.
2. Resolve `scope` from `--scope`, defaulting to repo root.
3. Derive `slug` from, in order:
   - `package.json#name`
   - `pyproject.toml [project].name`
   - `go.mod` module basename
   - `Cargo.toml [package].name`
   - repository directory basename
   - `--slug` override, if supplied
4. Sanitize slug to lowercase `a-z0-9-`, collapse repeated dashes, and trim leading/trailing dashes.
5. Set output paths:
   - JSON: `<output-dir>/<slug>-survey.json`
   - Markdown: `<output-dir>/<slug>-survey.md`
   - Default output dir: `spec/research/`

## Step 2 - File inventory

Prefer:

```bash
git ls-files
```

When scoped, filter the inventory to paths under the scope.

If git is unavailable, use `find` and exclude obvious generated or dependency directories:

- `.git`
- `node_modules`
- `.venv`, `venv`, `__pycache__`
- `dist`, `build`, `target`, `.next`, `.turbo`
- `.cache`, `.pytest_cache`

Record the scan method as `git-ls-files` or `find-fallback`.

## Step 3 - Repo state

When git is available, record:

- `head_sha`: `git rev-parse HEAD`
- `dirty_tree`: whether `git status --short` is non-empty
- `status_short`: literal lines from `git status --short`

When git is unavailable, record:

- `git_available: false`
- `head_sha: null`
- `dirty_tree: null`
- `status_short: []`

## Step 4 - Allowed manifest reads only

Read content only from the operational allowlist at [`skills/shared/survey-manifest-allowlist.md`](../shared/survey-manifest-allowlist.md). The current v1 categories are:

- JavaScript / TypeScript: `package.json`, `pnpm-workspace.yaml`, `lerna.json`, `nx.json`, `turbo.json`, `tsconfig*.json`, `next.config.*`, `vite.config.*`, `nuxt.config.*`, `astro.config.*`, `package-lock.json`, `pnpm-lock.yaml`, `yarn.lock`
- Python: `pyproject.toml`, `setup.py`, `setup.cfg`, `requirements*.txt`, `poetry.lock`, `Pipfile`, `Pipfile.lock`, `tox.ini`
- Go: `go.mod`, `go.sum`, `go.work`
- Rust: `Cargo.toml`, `Cargo.lock`
- Other languages: `Gemfile`, `composer.json`, `*.csproj`, `*.sln`, `pom.xml`, `build.gradle*`
- Infra and ops: `docker-compose*.yml`, `Dockerfile`, `terraform/*.tf`, `serverless.yml`, `helm/Chart.yaml`, `kustomization.yaml`
- CI and tooling: `.github/workflows/*.yml`, `.gitlab-ci.yml`, `.circleci/config.yml`, `Makefile`, `justfile`, `Taskfile.yml`
- Release and packaging: `.goreleaser.yml`, `.goreleaser.yaml`, `release-please-config.json`, `.release-please-manifest.json`, `.releaserc`, `.releaserc.json`, `.changeset/config.json`
- Runtime pinning: `.tool-versions`, `.nvmrc`, `.python-version`, `.ruby-version`
- SpecScore: `specscore.yaml`
- Docs: root `README*`, `ARCHITECTURE*`, `CONTRIBUTING*`; top-level `docs/**` filenames only unless a doc file is small enough to read under the size cap

Generated release outputs remain excluded. Do not read `dist/**`, packaged archives, generated checksums, generated changelogs, or binary artifacts as release manifests.

Size cap for any single text read: 80 KB. If an allowlisted file exceeds the cap, do not read it. Record a warning: `skipped due to size`.

## Step 5 - Monorepo detection

Detect monorepo signals before synthesis:

- `pnpm-workspace.yaml`
- `nx.json`
- `lerna.json`
- `turbo.json`

From specscore/specstudio-skills, MIT.

More from specscore/specstudio-skills

Signals

Stars
0
Forks
0
Open issues
7
Last commit (this folder)
May 31, 2026 (5 months ago)
Last release
Jun 6, 2026 (4 months ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from specscore

Cite this page

survey skill. Agent Mart. https://agentmart.dev/skills/specscore-survey (last updated 2026-10-24)