Agent skill

Light Project Structure

by Light0305 in Light0305/Light-skills

Audits, scaffolds and safely migrates research project folder structures, keeping existing repositories read-only until you approve exact moves from a plan.

MITAuto-check: notesDevelopment

Install Light Project Structure

skills CLI
$ npx skills add Light0305/Light-skills --skill light-project-structure -a claude-code

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

GitHub CLI
$ gh skill install Light0305/Light-skills light-project-structure --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/Light0305/Light-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/light-project-structure .claude/skills/light-project-structure && 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
light-project-structure
GitHub stars
640
Token cost
~3k tokens
SKILL.md length
1,291 words
Files
7 (incl. scripts, references)
Skills in repo
23
Repo updated
First seen
Licence
MIT

At a glance

Audits, scaffolds and safely migrates research project folder structures, keeping existing repositories read-only until you approve exact moves from a plan.

  • Works in 4 steps: Intake and requirements → Review the dry-run → Bind authorization → …
  • Starting a new research project with a clean, profile-based folder tree
  • SKILL.md covers Non-negotiable boundary, Choose the mode, Phase 1 — Intake and… and Phase 2 — Review the dry-run, plus 5 more sections
  • Runs Python scripts from its folder; calls git

What it does

The skill owns the visible project tree and its migration evidence, and works in one of four modes. Scaffold builds a starting tree from one explicit profile in an empty target. Intake inspects an existing repository, monorepo package or non-Git folder and stops at the decision. Apply runs once you approve exact action IDs bound to a plan digest, and rollback reverses applied moves from the applied manifest. Profiles cover Python, R, mixed and LaTeX projects, and it will not scaffold a non-empty directory or force a fixed tree onto projects it does not fit.

Safety rules are strict. Inventory is read-only, nothing is overwritten, deleted or forced, symlinks, submodules and uncommitted or untracked work are preserved, and content under .light belongs to memory-pm alone. Unknown facts stay marked UNKNOWN. Before delivery, structure_governance_gate.py checks the profile choice, read-only safety, leftover template placeholders, a secret scan, the environment, authorization binding and rollback evidence. A tidy structure is never presented as proof of reproducible research, and the skill stays a standalone local tool outside its pack's stage graph.

When your agent uses it

  • Starting a new research project with a clean, profile-based folder tree
  • Cleaning up an existing repository with a reviewed move plan
  • Rolling back moves from an earlier structure migration
  • Taking a source inventory and agreeing naming and storage policy before reorganizing

Example prompts

  • “Scaffold an empty research folder with the Python profile.”
  • “Audit this repository's structure and propose a move plan, but don't move anything yet.”
  • “I approve the move actions in the plan; apply them and keep the rollback manifest.”
  • “Roll back the last structure migration.”

Requirements

  • Python, to run scaffold.py and the governance gate script

Workflow steps

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

  1. Intake and requirements
  2. Review the dry-run
  3. Bind authorization
  4. Apply, verify, rollback, reapply

What it can do on your machine

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

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 2 files in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • git

    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

Light Project Structure loads about 3k tokens when it runs, and up to ~5.4k if it reads all its reference files. Until then it costs about 166 tokens; SKILL.md has 1,291 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~166
When it runs · the whole SKILL.md, loaded when a task matches
~3k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~5.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: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteMentions a .env fileSKILL.md:136
    doctor are present when relevant; `.env` ignore is not a secret-scan result.

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); the scripts in this folder are not scanned.

SKILL.md

The full file from Light0305/Light-skills at commit 6b44f57, republished under its MIT licence (© Light0305). 1,291 words, ~2,972 tokens.

Download SKILL.mdSave it as .claude/skills/light-project-structure/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.
name
light-project-structure
description
Audit, plan, scaffold, and safely migrate research project structures across greenfield, existing Git/non-Git repositories, and monorepo subroots. Use for project folders, repository cleanup, source inventory, move maps, naming and storage policy, Python/R/mixed/LaTeX profiles, template provenance, conflict review, applied-move evidence, or rollback. Existing projects are read-only until the user authorizes exact action IDs bound to a plan digest. Preserve uncommitted and untracked work, symlinks, submodules, and memory-pm's .light content. This is an off-DAG local tool: do not emit findings or invent a STAGE_GATES/ROUTES connection.

Project structure lifecycle

Own the visible project tree and its migration evidence. Do not mistake a tidy directory for reproducible research.

Read references/project-lifecycle-resource-map.md before an existing-repository migration. It defines artifacts, policy, access levels, provenance, and cross-skill ownership. Use references/structure-profiles.json for small profile minima and templates/project-policy.template.json for explicit project/file policy. Use scripts/structure_governance_gate.py before delivery to validate profile choice, existing-project read-only safety, template residuals, secret scan, environment doctor, authorization binding, applied-manifest binding, and rollback evidence.

Non-negotiable boundary

  1. Treat inventory as read-only access, not authorization to move.
  2. Never overwrite, delete, run git rm --cached, initialize DVC, rewrite configuration, or move a symlink automatically.
  3. Never use --force as consent. The lifecycle has no force bypass.
  4. Preserve all .light/ content. memory-pm alone creates or edits passport, project card, decision log, version history, terminology, and handoff files.
  5. Keep absent facts UNKNOWN. A path such as data/raw does not prove size, sensitivity, immutability, recomputability, or Git policy.
  6. Do not turn this overlay into a DAG node. Emit no light.findings.v1; add no STAGE_GATES, ROUTES, stage number, or back-edge.
  7. State that structural conformance does not prove data quality, experiment reproducibility, statistical validity, or paper quality.
  8. Never ship a generated or migrated tree with unresolved template placeholders, unhandled secret-scan hits, or missing required Python/R/environment checks.

Choose the mode

SituationMode
Empty target and the user wants a starting treescaffold with one explicit profile
Existing repository, monorepo package, or non-Git directoryintake, then stop at the decision
User approved exact moves after seeing the plancreate authorization, then apply
Applied moves need reversalrollback from the applied manifest

Do not scaffold a non-empty directory. Do not retrofit a fixed 23-directory tree onto R, paper-only, mixed-language, custom, or monorepo projects.

Phase 1 — Intake and requirements

Collect or preserve as UNKNOWN:

  • project type and whether the selected root is a Git root, monorepo subroot, or non-Git directory;
  • deliverables, compute environment, data volume, remote storage, collaborators, CI, license, and retention;
  • Git root, branch, tracked/untracked/ignored state, uncommitted changes, submodules, symlinks, large files, and sensitive path signals.

Choose the smallest profile after inspecting observed technology signatures and the user's declared deliverables:

  • python-research
  • r-research
  • mixed-research
  • paper-only
  • existing-custom

Profiles are extensible minima, not compliance verdicts. The selected profile is not evidence about the project. intake records observed file/config signals separately from policy-declared artifact types, recommends a profile, and fails the governance gate when a different profile has no concrete profile_selection_reason.

Copy the policy template outside the source root, fill known project facts, and add file rules only where there is evidence. Legitimate tracked artifacts include small public fixtures, reviewed golden files, DVC pointers, final paper figures, release artifacts, or audit evidence when project policy requires them. Large/sensitive source data, models, and results usually need DVC/object storage, but require a decision rather than a directory-name verdict.

Run:

text
python scripts/scaffold.py intake <root> --out <evidence-dir> \
  --profile mixed-research --policy <project-policy.json>

The command writes evidence to --out and verifies that the source snapshot and Git status did not change.

intake also emits technology signatures, the environment doctor, template residual scan, secret scan, and governance report named in the resource map. Tool checks derive from observed or explicitly declared artifact types, not from the chosen profile alone. If the project requires Python, R, Quarto, DVC, LaTeX, or other local tools, record those requirements in the policy. Use the standalone doctor command only when you need an extra ad-hoc check:

text
python scripts/structure_governance_gate.py --doctor python r

Phase 2 — Review the dry-run

Read the intake artifacts named in the resource map. Check:

  • every inventory row has locator/hash/size/Git state plus explicit or UNKNOWN owner, producer, recomputability, sensitivity, classification, target, and policy basis;
  • technology signatures identify their locator and distinguish observed evidence from policy.project.artifact_types; the selected profile matches the recommendation or has a concrete user override reason;
  • duplicates are evidence, never auto-delete instructions;
  • symlinks, existing targets, and many-to-one moves are blocked;
  • ../, absolute, drive-letter, UNC, or otherwise root-escaping action paths are blocked in the dry-run plan and governance gate, not deferred to apply;
  • a monorepo subroot uses paths relative to that subroot without treating the whole Git root as its project;
  • .light/ is preserved and has no move action;
  • large tracked fixtures are not condemned merely for being under raw;
  • large recomputable or sensitive artifacts surface a storage-policy decision.
  • template provenance, residual placeholder scan, secret scan, and environment doctor are present when relevant; .env ignore is not a secret-scan result.

Present:

  1. the recommended profile and why;
  2. safe action IDs;
  3. blocked conflicts and unknowns;
  4. separate decisions for move/rename, overwrite (not supported), deletion, git rm --cached, configuration rewrite, and DVC initialization;
  5. the plan SHA-256.

Then stop. Ask which action IDs the user authorizes. Do not prewrite their answer.

Run the governance gate on the delivery bundle before presenting a structure as ready:

text
python scripts/structure_governance_gate.py \
  --input templates/project-structure-governance.example.json

The bundled example is intentionally fail-closed: it attempts scaffold on an existing R project, leaves template placeholders, reports secret values, misses R, uses force, moves .light/, duplicates action IDs, applies delete, moves a symlink, and risks overwrite.

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

Phase 3 — Bind authorization

After the user chooses, create an authorization document:

json
{
  "schema": "light.project-structure.v2.authorization",
  "authorization_id": "<user-created stable authorization id>",
  "plan_sha256": "<exact migration-plan plan_sha256>",
  "approved_action_ids": ["move-0001"],
  "authorized_by": "<user-supplied identifier>",
  "authorized_at": "<YYYY-MM-DD>"
}

Do not include blocked or unknown actions. authorization_id and authorized_by must be concrete user-supplied values, not template text; authorized_at cannot be in the future. A changed plan requires fresh authorization. The authorization cannot resolve an overwrite or bypass a symlink block.

Phase 4 — Apply, verify, rollback, reapply

text
python scripts/scaffold.py apply \
  --plan <migration-plan.json> \
  --authorization <authorization.json> \
  --manifest-out <applied-manifest.json> \
  --as-of <YYYY-MM-DD>

python scripts/scaffold.py rollback \
  --manifest <applied-manifest.json> \
  --rollback-out <rollback-manifest.json>

apply re-verifies source hashes and absolute containment, creates missing target parents, refuses existing targets, moves only ordinary files, records before/after SHA-256, and writes an applied manifest that binds the exact plan file and authorization file by locator plus file SHA-256. A path that escaped the selected root should already have been marked blocked during planning; if one reaches apply anyway, apply still fails closed. rollback verifies target hashes and refuses to overwrite a reappeared source; it uses the applied manifest for safe restoration and does not require the original plan/auth files to still be present.

After rollback:

  1. compare the source snapshot and Git status with intake;
  2. verify untracked drafts and .light/ content remain byte-identical;
  3. reapply only if the authorization remains intended;
  4. report unresolved conflicts and separate manual Git/DVC decisions.

Greenfield scaffold

Use only on an empty target:

text
python scripts/scaffold.py scaffold <target> --profile r-research --name <name>

The command records profile and generator hashes in .project-structure-provenance.json. It is one-time generation, not safe template updating. For managed template evolution, evaluate Copier or Cruft and review local modifications and conflicts; do not claim drift detection is a merge guarantee.

Ownership handoff

  • Ask memory-pm to run pm.py init when .light/ memory is needed; do not do its work here.
  • Hand data quality, lineage, and release design to data-engineering.
  • Hand run manifests and executable reproducibility to experiment-coding.
  • Let file-reading understand supplied repositories/materials; this skill alone owns moves.
  • Let orchestrator consume a delivery if useful; do not create a gate.

Validation

Run the script self-test:

text
python scripts/scaffold.py --selftest
python scripts/structure_governance_gate.py --selftest

It exercises source-read-only intake, a tracked fixture policy, generated environment/template/secret/governance reports, an untracked draft, .light/ preservation, authorization binding, applied-manifest plan/auth file binding, real move/hash evidence, rollback, reapply, non-Git mode, monorepo subroot handling, profile scaffold idempotence, and a best-effort Windows symlink branch.

Before delivery, verify:

  • No source mutation occurred during intake.
  • The user saw conflicts, unknowns, action IDs, and plan digest before apply.
  • Applied moves exactly match authorized IDs and have before/after hashes.
  • Applied manifest binds the exact migration-plan file and authorization file by locator and file SHA-256.
  • No target was overwritten and no symlink was moved.
  • No planned/applied source or target path escapes the selected project root.
  • Untracked work and .light/ content survived move and rollback.
  • Fixtures/golden files/DVC pointers were classified by policy, not path.
  • Template residual scan, secret scan, environment doctor, and profile reason are present; observed/declared signatures support the profile, and R/Python requirements are checked when claimed.
  • structure_governance_gate.py passes for the actual delivery bundle.
  • Template source/version/hash/parameters and update limitation are recorded.
  • The delivery does not claim that structure proves reproducibility.

© Light0305, 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 6 other files (scripts, references) in skills/light-project-structure of Light0305/Light-skills.

  • SKILL.md
  • references/project-lifecycle-resource-map.md
  • references/structure-profiles.json
  • scripts/scaffold.py
  • scripts/structure_governance_gate.py
  • templates/project-policy.template.json
  • templates/project-structure-governance.example.json

Open the folder on GitHubat commit 6b44f57

Compare with similar skills

Light Project Structure 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.

Light Project Structure compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Light Project Structure this skillLight0305/Light-skills640—~3kAutomated safety check: NotesMIT
Setup Gitprobabl-ai/skills135—~1.4kAutomated safety check: NotesBSD-3-Clause
Project Initathola/claude-night-market342—~1.2kAutomated safety check: PassMIT
Migrate Internal Package into GhostTryGhost/Ghost55k—~3.8kAutomated safety check: PassMIT
Skyvern Version BumpSkyvern-AI/skyvern23k—~1kAutomated safety check: NotesAGPL-3.0
Saleor Commit Workflowsaleor/saleor23k—~575Automated safety check: PassBSD-3-Clause

Similar skills

  • Setup Git

    probabl-ai/skills

    Set up git for an ML workspace after scaffolding. An agent skill from probabl-ai/skills.

    135 GitHub stars~1.4k tokensUpdated today
    DevelopmentAuto-check: notes
  • Project Init

    athola/claude-night-market

    Scaffolds new projects with git, CI/CD workflows, pre-commit hooks, and build config.

    342 GitHub stars~1.2k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Moves a package from another TryGhost repository into Ghost as an internal workspace package while keeping its Git history, with checkpoints for the steps that need an administrator.

    55k GitHub stars~3.8k tokensUpdated today
    DevelopmentAuto-check passed
  • Skyvern Version Bump

    Skyvern-AI/skyvern

    Walks through a Skyvern open-source release bump: update the version, rebuild the Python and TypeScript SDKs with Fern, commit, and open a pull request.

    23k GitHub stars~1k tokensUpdated today
    DevelopmentAuto-check: notes
  • Commits changes in the Saleor codebase and works through pre-commit hook failures from ruff, mypy, the GraphQL schema check and the migrations check.

    23k GitHub stars~575 tokensUpdated today
    DevelopmentAuto-check passed
  • Opens the pybind11 release-preparation pull request: picking the release base, bumping the version in common.h and integrating the changelog, following docs/release.rst.

    18k GitHub stars~1.7k tokensUpdated today
    DevelopmentAuto-check passed

More from Light0305/Light-skills

All 23 skills in this repo
  • Citation Verification

    Light0305/Light-skills

    Verifies that every reference in a manuscript is real, correctly identified and actually supports its claim, and produces a citation registry for typesetting.

    640 GitHub stars~3.4k tokensUpdated 3 mo ago
    Auto-check passed
  • Light Research Orchestrator

    Light0305/Light-skills

    Coordinates and recovers multi-stage Light research projects from a single passport file, with checkpoints, stale-work tracking and rerouting only when you approve.

    640 GitHub stars~3.8k tokensUpdated 3 mo ago
    Auto-check passed
  • Patent Disclosure Handoff

    Light0305/Light-skills

    Builds an evidence-backed invention disclosure packet from a project or research result for attorney or patent-agent review, without giving legal advice.

    640 GitHub stars~2k tokensUpdated 3 mo ago
    Auto-check passed
  • Prepares draft materials for a China software copyright registration from a real project: application worksheet, source deposit plan, operation manual and consistency checks.

    640 GitHub stars~1.9k tokensUpdated 3 mo ago
    Auto-check passed
  • Light System Design

    Light0305/Light-skills

    Evidence-based workflow for designing or modernizing a software system: current-state inventory, options, API and schema contracts, migration plans, ADRs and verification.

    640 GitHub stars~3.6k tokensUpdated 3 mo ago
    Auto-check passed
  • Light Typesetting

    Light0305/Light-skills

    Build and preflight submission-ready LaTeX/PDF artifacts for Light stage 11.

    640 GitHub stars~3.3k tokensUpdated 3 mo ago
    Auto-check passed

Works with

Questions about Light Project Structure

What does Light Project Structure do?

Audits, scaffolds and safely migrates research project folder structures, keeping existing repositories read-only until you approve exact moves from a plan. The skill owns the visible project tree and its migration evidence, and works in one of four modes. Scaffold builds a starting tree from one explicit profile in an empty target.

When should I use Light Project Structure?

Light Project Structure fits situations like: starting a new research project with a clean, profile-based folder tree; cleaning up an existing repository with a reviewed move plan; rolling back moves from an earlier structure migration; taking a source inventory and agreeing naming and storage policy before reorganizing.

How do I install Light Project Structure in Claude Code?

Run `npx skills add Light0305/Light-skills --skill light-project-structure -a claude-code`. Or copy the skill folder (skills/light-project-structure in Light0305/Light-skills) into .claude/skills/light-project-structure in your project. Claude Code loads it when a task matches its description.

How do I install Light Project Structure in Codex?

Run `npx skills add Light0305/Light-skills --skill light-project-structure -a codex`. Or copy the skill folder (skills/light-project-structure in Light0305/Light-skills) into .agents/skills/light-project-structure in your project. Codex loads it when a task matches its description.

Can I use Light Project Structure 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 Light0305/Light-skills --skill light-project-structure -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/light-project-structure, .gemini/skills/light-project-structure, .github/skills/light-project-structure and .opencode/skills/light-project-structure in your project.

What does Light Project Structure need to run?

Going by SKILL.md and its folder, Light Project Structure needs Python for the scripts in its folder and the command-line tools its instructions call (git). Our summary lists: Python, to run scaffold.py and the governance gate script.

Does Light Project Structure 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 Light Project Structure safe to install?

Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Light Project Structure use?

Light Project Structure 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 Light Project Structure use?

About 3k tokens (SKILL.md is roughly 12k 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 2.4k tokens, read only when the agent opens those files.

What are the alternatives to Light Project Structure?

Skills that share tags, products or a category with Light Project Structure: Setup Git (probabl-ai/skills, 135 stars), Project Init (athola/claude-night-market, 342 stars), Migrate Internal Package into Ghost (TryGhost/Ghost, 55k stars) and Skyvern Version Bump (Skyvern-AI/skyvern, 23k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Light Project Structure?

Light0305 (a GitHub user) maintains it in Light0305/Light-skills, which has 640 GitHub stars. The repository holds 23 skills in this directory. The repository was last updated on July 6, 2026.

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