atelier-fashion/adlc-toolkit/init

Claude Code and agent skill by atelier-fashion/adlc-toolkit

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Bootstrap .adlc/ structure in a new repo or subdirectory

Install

npx vskill@latest install atelier-fashion/adlc-toolkit/init

Semi-extensibleMentions customization, but needs skill-specific knowledge. Read the extensible skills standard

SKILL.md

/init — Bootstrap ADLC Structure

You are setting up the .adlc/ directory structure for spec-driven development.

Ethos

!test -s .adlc/ETHOS.md && cat .adlc/ETHOS.md || echo No ethos found — run /init, or /adlc:init on the plugin install, to vendor .adlc/ETHOS.md

Input

The target is the argument: whatever follows /init in the invocation (on Claude Code it can also arrive as an ARGUMENTS: line appended to this text), a directory to initialize. With none, the current working directory.

A --harness <name>[,<name>…] flag in the argument names the agent harnesses whose project layer Step 8 renders (REQ-657 BR-11). Strip it before reading the directory. Without it the harness list is claude alone. A non-Claude harness's project layer is written only when the flag names it, never because adlc harness detect found its binary, and only the adapters shipped under the toolkit's harness/ directory can be named.

Instructions

Step 1: Determine Target Directory
  1. If given a path, use that as the target
  2. If no argument, use the current working directory
  3. Check if .adlc/ already exists — if so, report what's already there and ask if the user wants to reinitialize or fill gaps
Step 2: Gather Project Context

Ask the user for the following (skip any that are already known from existing files):

  1. Project name — What is this project called?
  2. What it does — One paragraph description
  3. Tech stack — Languages, frameworks, databases, cloud providers
  4. Project scope — What's in scope vs out of scope
  5. Key architectural patterns — Layered? Microservices? Monolith?

If a CLAUDE.md, README.md, or package.json exists, extract this info automatically and confirm with the user instead of asking.

Step 3: Create Directory Structure
.adlc/
ETHOS.md # Copy of $ADLC_TOOLKIT_ROOT/ETHOS.md — ensures skills work inside git worktrees
context/
project-overview.md # What the project does, tech stack, scope
architecture.md # System diagram, layers, key patterns, ADRs
conventions.md # File organization, naming, testing, git conventions
taxonomy.md # Retrieval tag vocabulary (component/domain/stack/concerns)
specs/
.gitkeep
bugs/
.gitkeep
knowledge/
assumptions/
.gitkeep
lessons/
.gitkeep
templates/ # Copies of $ADLC_TOOLKIT_ROOT/templates/*.md — ensures skills work inside git worktrees
assumption-template.md
bug-template.md
lesson-template.md
requirement-template.md
task-template.md
partials/ # Copies of $ADLC_TOOLKIT_ROOT/partials/*.sh — shared shell snippets sourced by SKILL.md files
ethos-include.sh
agents/ # Copies of $ADLC_TOOLKIT_ROOT/agents/*.md — the checklists a dispatch paragraph runs inline (no harness discovers agents here)
reflector.md
workflows/ # Copies of $ADLC_TOOLKIT_ROOT/workflows/ RUNTIME files only — Dynamic Workflow scripts used by the workflow engine
adlc-sprint.workflow.js # ONE self-contained file: meta first, schemas + pure helpers inlined behind // ==== BEGIN/END PURE ==== (runtime has no require)
README.md # NOTE: workflows/tests/ is intentionally NOT copied — those are toolkit-internal node:test files (CommonJS require) that break Jest in "type":"module" consumer repos (see Step 6)

Why the local copies of ETHOS.md, templates, partials, agents, and workflows? Claude Code's sandbox blocks the Read tool from accessing paths outside the current working directory. When a skill runs inside a git worktree (e.g., .claude/worktrees/<name>/), $ADLC_TOOLKIT_ROOT/ETHOS.md, $ADLC_TOOLKIT_ROOT/templates/*.md, $ADLC_TOOLKIT_ROOT/partials/*.sh, $ADLC_TOOLKIT_ROOT/agents/*.md, and $ADLC_TOOLKIT_ROOT/workflows/* become unreadable by subagents and any tool that uses Read mid-skill. That holds on both install routes: the clone behind the skills symlink is outside the project, and so is the plugin's cache copy, which is not an allowed working directory either (REQ-669 verification.md N2). Keeping copies under .adlc/ makes the toolkit work identically in main checkouts and worktrees.

ToolkitRoot. $ADLC_TOOLKIT_ROOT is the running install's toolkit directory: the plugin's cache copy on the plugin route, or the clone behind the skills symlink on the symlink route. Every fence below that reads a toolkit file resolves it with the canonical root line as its first line (conventions.md "Bash in skills", REQ-669 ADR-1). Fenced blocks share no shell state, so each fence carries its own copy of that line, and /init copies from whichever install is running (REQ-669 ADR-8).

Step 4: Populate Context Files

project-overview.md — Based on user input or existing docs:

markdown
# {Project Name} — Project Overview
## What It Does
{description}
## Tech Stack
{tech stack table or list}
## Project Scope
{in scope / out of scope}

architecture.md — Initial structure:

markdown
# {Project Name} — Architecture
## System Diagram
{ASCII diagram of major components}
## Layers
{description of architectural layers}
## Key Patterns
{important patterns used in the codebase}
## ADRs
(Add architectural decision records here as decisions are made)

conventions.md — Based on project analysis:

markdown
# {Project Name} — Conventions
## File Organization
{directory structure}
## Naming
{naming conventions per language}
## Testing
{test framework, conventions, coverage requirements}
## Error Handling
{error handling patterns}
## Git Conventions
{branch naming, commit messages, PR process}
Step 5: Update .gitignore

Add the following entries to the project's .gitignore (create it if it doesn't exist):

# ADLC worktrees (used by /proceed for parallel session isolation)
.worktrees/
# Claude Code per-user permission overrides (team settings live in .claude/settings.json)
.claude/settings.local.json
# ADLC session sidecars (per-session transcript pointers written by a hook, per-worktree)
.adlc/.session/
# ADLC ID counters are global (${ADLC_HOME:-$HOME/.claude}/.global-next-req, .global-next-bug and .global-next-lesson) — not per-project
# Legacy per-project counters (deprecated, no longer read/written — ignored if present)
.adlc/.next-bug
.adlc/.next-req
.adlc/.next-lesson
Step 6: Copy ETHOS.md and Templates Into the Project

Copy the canonical ETHOS.md and all templates from the toolkit into the project so skills keep working inside git worktrees (where Read is sandboxed to the worktree root).

bash
ADLC_TOOLKIT_ROOT="${CLAUDE_PLUGIN_ROOT}"; [ -n "$ADLC_TOOLKIT_ROOT" ] || [ ! -d "$HOME/.claude/skills/partials" ] || ADLC_TOOLKIT_ROOT="$HOME/.claude/skills"; [ -n "$ADLC_TOOLKIT_ROOT" ] || ADLC_TOOLKIT_ROOT=$(cat "$HOME/.claude/adlc/plugin-root" 2>/dev/null); export ADLC_TOOLKIT_ROOT="${ADLC_TOOLKIT_ROOT:-$HOME/.claude/skills}"
# Verify source exists. ToolkitRoot is the plugin's cache copy on the plugin
# route, or the clone behind the skills symlink on the symlink route.
if [ ! -f "$ADLC_TOOLKIT_ROOT/ETHOS.md" ] || [ ! -d "$ADLC_TOOLKIT_ROOT/templates" ] || [ ! -d "$ADLC_TOOLKIT_ROOT/partials" ] || [ ! -d "$ADLC_TOOLKIT_ROOT/agents" ] || [ ! -d "$ADLC_TOOLKIT_ROOT/workflows" ]; then
echo "ERROR: adlc toolkit not found at $ADLC_TOOLKIT_ROOT (ToolkitRoot). Install it by either route. Plugin route: claude plugin marketplace add atelier-fashion/adlc-toolkit, then claude plugin install adlc@adlc-toolkit. Symlink route: clone adlc-toolkit and run its ./install.sh."
exit 1
fi
# Copy ETHOS.md (overwrite — canonical is source of truth)
cp "$ADLC_TOOLKIT_ROOT/ETHOS.md" .adlc/ETHOS.md
# Copy templates (overwrite — canonical is source of truth)
mkdir -p .adlc/templates
cp "$ADLC_TOOLKIT_ROOT/templates"/*.md .adlc/templates/
# Copy partials (overwrite — canonical is source of truth). These are POSIX
# shell snippets sourced by SKILL.md files (e.g., ethos-include.sh). As in the
# other copies, the glob sits outside the quoted directory. Here that also
# matters: partials/tests/source-guard.test.sh reads any fence line containing
# "$ADLC_TOOLKIT_ROOT/partials/" as a partial being sourced.
mkdir -p .adlc/partials
cp "$ADLC_TOOLKIT_ROOT/partials"/*.sh .adlc/partials/
chmod +x .adlc/partials/*.sh
# Copy agent checklists (overwrite — canonical is source of truth), every
# agents/*.md by glob. A dispatch paragraph's inline arm reads
# .adlc/agents/<name>.md when the harness cannot run subagents or the skill runs
# inside one (REQ-666 BR-8), because a worktree-sandboxed or session-jailed read
# cannot reach ToolkitRoot. A checklist store only: no harness is configured to
# discover agents here, so nothing is registered twice.
mkdir -p .adlc/agents
cp "$ADLC_TOOLKIT_ROOT/agents"/*.md .adlc/agents/
# Copy workflows (overwrite — canonical is source of truth). These are the
# Dynamic Workflow scripts the workflow engine runs (e.g.,
# adlc-sprint.workflow.js — ONE self-contained file with schemas + pure helpers
# inlined, since the runtime has no require). Resolved via the two-level fallback
# (.adlc/workflows/... -> $ADLC_TOOLKIT_ROOT/workflows/...) so the engine works
# inside git worktrees where Read is sandboxed to the worktree root.
#
# Copy ONLY the runtime files: the workflow script(s) and the top-level README.
# Do NOT copy workflows/tests/ — those are toolkit-internal `node:test` unit
# tests for the inlined PURE helpers (CommonJS `require('node:test')`). They have
# no purpose in a consumer repo, and shipping a `*.test.js` under .adlc/ is a
# trap: in any "type":"module" repo running Jest, the DEFAULT testMatch
# (**/?(*.)+(spec|test).[jt]s?(x)) discovers .adlc/workflows/tests/helpers.test.js,
# runs it as ESM, and fails it with "ReferenceError: require is not defined" —
# reddening `npm test` and any CI gate that runs it. The engine is ONE
# self-contained file (no require/import/fs), so globbing *.workflow.js captures
# everything the runtime ever resolves.
mkdir -p .adlc/workflows
cp "$ADLC_TOOLKIT_ROOT/workflows"/*.workflow.js .adlc/workflows/
cp "$ADLC_TOOLKIT_ROOT/workflows/README.md" .adlc/workflows/
# Idempotent cleanup: remove a stale tests/ dir left by an OLDER /init that did
# `cp -R` of the whole workflows tree. Heals already-initialized repos on re-run;
# safe no-op when absent. (Belt-and-suspenders to the explicit-file copy above.)
rm -rf .adlc/workflows/tests
# Clean up Finder-style duplicates if present. Matches:
# - .md files: "requirement-template 2.md"
# - non-.md files: "pipeline-state 2.json", ".next-bug 2"
# - directories: "knowledge 2", "specs 2"
# The `-depth` flag processes directory contents before the directory itself,
# so `rm -rf` on a "* 2" dir doesn't fail due to prior deletions.
find .adlc -depth \( -name "* 2" -o -name "* 2.*" \) -exec rm -rf {} + 2>/dev/null
# Advisory (Jest repos): the copy above ships NO test files under .adlc/, so the
# default Jest testMatch stays green with no config change. Only a repo with a
# custom BROAD testMatch (e.g. "**/*.js") would pick up .adlc/ — those repos
# should add "<rootDir>/.adlc/" to testPathIgnorePatterns. Purely informational;
# this does not edit package.json or any jest config.
if grep -q '"jest"' package.json 2>/dev/null || find . -maxdepth 1 -name 'jest.config.*' 2>/dev/null | grep -q .; then
echo "ADVISORY (Jest detected): .adlc/ contains no test files by design — default 'npm test' is unaffected. If you use a custom broad testMatch, add \"<rootDir>/.adlc/\" to testPathIgnorePatterns."
fi

This is the start of the file. Read the full SKILL.md on GitHub.

Security

  • Security scanPassed, 90 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
159
Repository forks
41
7-day trend score
25

Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 3 Aug 2026, 3 months ago.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/atelier-fashion/adlc-toolkit/init/badge)](https://verified-skill.com/skills/atelier-fashion/adlc-toolkit/init)

Something wrong with this skill or its page? Tell us.