qdirectory

qdirectory is a skill for Claude Code from 3awny/qship. It costs 58 tokens per session (1,884 once invoked), scanned A, original, MIT.

A review tool for checking whether new files and modules are placed in the right directories of a monorepo, a repository containing multiple related applications or packages. It compares each file with the project’s existing layers and naming patterns.

In plain words
What is it for?
Use it after adding or substantially moving files to review their repository and architectural layer, inspect nearby directory contents, and decide whether their location fits the existing organization.
Why use it?
It catches misplaced files and duplicate catch-all directories before the codebase develops parallel structures that are difficult to maintain.

Skill for Claude Code

Written for Claude Code: shipped in a Claude Code plugin.

Part of the qship plugin — 22 skills, 1 agent, 1 hook shipped together

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/3awny/qship/qdirectory
Any agent
npx skills add 3awny/qship --skill qdirectory
Clone the repo
git clone --depth 1 https://github.com/3awny/qship

Made for: Claude Code.

Or install qship, the plugin that ships this one along with the rest of its 22 skills, 1 agent, 1 hook.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for qdirectory

README.md
[![agentmods](https://agentmods.dev/badge/skills/3awny/qship/qdirectory.svg)](https://agentmods.dev/skills/3awny/qship/qdirectory)
Your own site
<a href="https://agentmods.dev/skills/3awny/qship/qdirectory"><img src="https://agentmods.dev/badge/skills/3awny/qship/qdirectory.svg" alt="Measured on agentmods" height="20"></a>
Per session 58 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,884 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00058 $0.01884
Opus 5 $0.00029 $0.00942
Sonnet 5 $0.00012 $0.00377
Haiku 4.5 $0.00006 $0.00188

Measured 5d ago against content hash 8f4f64c6f954, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-05, from the pricing page.

Security

Grade A, and why

qdirectory scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 5d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

templates/skills/qdirectory/SKILL.md · 110 lines

How it starts

The opening of the file, as written. The whole thing — 110 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Directory Organization Review

You are a directory-organization specialist for the {{COMPANY_SLUG}} monorepo. The goal is to catch new files that landed in the wrong place — wrong layer, wrong domain, or in a "common/utils/shared" directory whose existing contents don't actually fit. Without this catch, parallel hierarchies grow and refactors become impossible.

Scope

Default to new and substantively-moved files in the diff:

git diff develop...HEAD --diff-filter=AR --name-only

For each file, classify which repo it lives in (any in your repos.json) and which layer (api/, services/, repositories/, data_models/, schemas/, migrations/alembic/, ui/, connectors/, tests/). Whole-repo audits are an opt-in (--full) — too noisy as a default.

Core principle: read the directory before placing into it

A directory's name tells you what someone intended. Its contents tell you what it is. They diverge over time. Before suggesting that a new file go into an existing directory, list its contents and read 2–3 representative files. The cohesive purpose you find determines whether the new file fits.

Example failure: {{CODEBASE_PATH_PREFIX}}/{{PRIMARY_REPO_NAME}}/common/ looks generic, but its contents are all {{COMPANY_SLUG_UPPER}} {{PRIMARY_REPO_NAME}} API clients (users.py, gadgets.py, gizmos.py). Putting connector infrastructure there mixes two unrelated concerns. Correct location: {{CODEBASE_PATH_PREFIX}}/{{PRIMARY_REPO_NAME}}/connectors/common/ — following the common/ pattern already used inside individual connectors but at the cross-connector level.

This is the most common failure mode of automated directory advice — recommending placement based on the directory's name rather than its current contents.

{{COMPANY_SLUG}} layer map

Use this as the anchor when assessing placement. Every new file should map to exactly one cell:

Layer What lives there What does NOT
api/ (or routers/) FastAPI route declarations, request/response handling, HTTP-specific validation Business logic, SQL, domain rules
services/ Business logic, orchestration across multiple repos, side-effect coordination Direct SQLAlchemy queries, HTTP serialization
repositories/ Data access — single-aggregate CRUD, queries, embedding side-effects Cross-aggregate orchestration, HTTP types
data_models/ (SQLAlchemy) ORM model classes only Pydantic schemas, business logic
schemas/ (Pydantic) Request / response shapes, validators ORM models, DB queries
migrations/alembic/versions/ Alembic revisions Anything else
connectors/ Third-party integrations (External ERP, external CRM/accounting connector, etc.) {{COMPANY_SLUG_UPPER}}-internal API clients
ui/components/react/ React/TSX components Page-level Dash layouts
ui/pages/ Dash page layouts and callbacks React component definitions
tests/ Test files (test_*.py, *.test.tsx) Production code

Read the full file on GitHub · 110 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 5d ago First seen · 110 lines · 58 tokens per session scan A 8f4f64c6f954

Subscribe to this mod's changes

qdirectory is a skill published in the GitHub repository 3awny/qship (2 stars, last pushed 2mo ago), licensed MIT. It adds 58 tokens to every session and 1,884 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other skills, from other repositories

remove-ai-marks

Strip multi-vendor AI provenance from owned files: hidden Unicode (Layer A), statistical sampling watermarks via rewrite (Layer B — always offer), and C2PA/EXIF/XMP/container metadata on PNG/JPEG/WebP/SVG/PDF/DOCX/ODT/HTML/MD. Covers Claude, Gemini/SynthID-class, OpenAI provenance surfaces, and open-LLM sampling…

ShadowAqueduct/watermark-remover · 135 tokens

clean-user-facing-text

Audit and finalize authorized natural-language text meant for readers: strip suspicious invisible Unicode, then rewrite prose while keeping facts, meaning, and the writer's voice. Use when the user asks to clean, humanize, polish, or finalize articles, manuscripts, reports, documentation, emails, product copy, UI…

ShadowAqueduct/watermark-remover · 121 tokens

oracle

Author an IMPL-BLIND spec-conformance oracle for an acceptance criterion the policy worklist (clad oracle --required) demands — an empty worklist means don't author unless the user explicitly asks. YOU spawn a blind sub-agent from a spec-only brief, then record it. Activate only when the connected project contains…

qwerfunch/cladding · 82 tokens

reviewer

Philosophical guardrails enforcer — independently audits code, tests, and spec for layered-integrity, Why>What, error-as-data, and the related Ironclad philosophical invariants. Activate only when the connected project contains spec.yaml or the user explicitly names Cladding; ignore ordinary requests in uninitialized…

qwerfunch/cladding · 68 tokens

changelog

Render release notes / a changelog from the cladding spec. Use when the user asks for release notes, a changelog, 릴리즈 노트, 변경 이력, or "what changed (since )" — run clad changelog --json for the deterministic shipped-changes manifest, then write the human-facing notes FROM it, sourcing every claim from a feature title or…

qwerfunch/cladding · 121 tokens

doctor

Diagnose Cladding runtime health — Claude Code hook liveness and version, CI package pinning, lifecycle governance, and sentinel-miss frequency by phase × cause × fallback. Use when hooks may be silent, CI may float across Cladding releases, scan or run results look thinner than expected, or before tuning the host…

qwerfunch/cladding · 93 tokens