Repository navigation
Releases: Freakling/App-Director
Release list
v1.7.1
How to install
Designed to work with any AI coding assistant that reads AGENTS.md. Built and tested on Claude Code; other assistants are untested.
Your app needs git (git init if it has none) and no uncommitted changes. You also need bash (on Windows it comes with Git for Windows) and gitleaks ≥ 8.18.0, except 8.19.0, which can't scan: use 8.19.1 or later (macOS: brew install gitleaks; Windows: winget install gitleaks).
Option 1: the skill. In your app's folder, run:
npx skills add Freakling/App-Director
That installs the app-director skill for the assistant you choose in the prompt; in Claude Code it becomes the /app-director slash command. Ask your assistant to set up App Director. The skill fetches the latest App Director release outside your app and runs onboarding. To pick up a newer release later, run the command again.
Option 2: the Claude Code plugin. In Claude Code:
/plugin marketplace add Freakling/App-Director
/plugin install app-director@app-director
The plugin installs the latest release. Then open a new Claude Code session in your app's folder (or run /reload-plugins), and run /app-director:app-director.
Option 3: manual install. Clone the latest release next to your app as App-Director/. The release's tag is v followed by its version number (v1.7.1 for this release), and the Releases page shows the latest one; replace <tag> in this command with it:
git clone --branch <tag> --depth 1 https://github.com/Freakling/App-Director.git App-Director
Then ask your assistant:
Read App-Director/ONBOARDING.md and follow it to install App Director into this project.
Either way, onboarding works out whether this is a new app, an existing app or an upgrade. It installs the files and sets up the toolchain, interviews you (new app) or reads the existing code, agrees with you who owns what, and ends with one commit for you to approve. Afterwards, restart Claude Code so the new commands load.
Upgrading: run /app-director (or /app-director:app-director with the plugin), or ask your assistant to run onboarding. It detects the existing install and carries out the upgrade steps of each CHANGELOG entry newer than your version, in order.
Upgrading the plugin: run /plugin marketplace update app-director and then /plugin update app-director@app-director. Restart Claude Code, open a new session in your app's folder, and run /app-director:app-director again.
What's changed
- An install from a development snapshot says so. An install from a source whose
CHANGELOG.mdhas entries under## Unreleasedrecords# app-director <version> + unreleased (<commit>)as the manifest's first line, and its closing lines say it is a development snapshot, not a release, with where the latest release is listed.VERSIONstays at the last release until a release is cut, so the manifest tells the truth. The commit comes from the source's git checkout (a release zip has none) and goes on a# source <commit>line, which release installs get too. An install from a release records the plain version. Upgrades read the old version without the suffix, so an upgrade from a snapshot works.- Upgrade steps: none needed. The next upgrade rewrites the manifest.
v1.7.0
How to install
Designed to work with any AI coding assistant that reads AGENTS.md. Built and tested on Claude Code; other assistants are untested.
Your app needs git (git init if it has none) and no uncommitted changes. You also need bash (on Windows it comes with Git for Windows) and gitleaks ≥ 8.18.0, except 8.19.0, which can't scan: use 8.19.1 or later (macOS: brew install gitleaks; Windows: winget install gitleaks).
Option 1: the skill. In your app's folder, run:
npx skills add Freakling/App-Director
That installs the app-director skill for the assistant you choose in the prompt; in Claude Code it becomes the /app-director slash command. Ask your assistant to set up App Director. The skill fetches the latest App Director release outside your app and runs onboarding. To pick up a newer release later, run the command again.
Option 2: the Claude Code plugin. In Claude Code:
/plugin marketplace add Freakling/App-Director
/plugin install app-director@app-director
The plugin installs the latest release. Then open a new Claude Code session in your app's folder (or run /reload-plugins), and run /app-director:app-director.
Option 3: manual install. Clone the latest release next to your app as App-Director/. The release's tag is v followed by its version number (v1.7.0 for this release), and the Releases page shows the latest one; replace <tag> in this command with it:
git clone --branch <tag> --depth 1 https://github.com/Freakling/App-Director.git App-Director
Then ask your assistant:
Read App-Director/ONBOARDING.md and follow it to install App Director into this project.
Either way, onboarding works out whether this is a new app, an existing app or an upgrade. It installs the files and sets up the toolchain, interviews you (new app) or reads the existing code, agrees with you who owns what, and ends with one commit for you to approve. Afterwards, restart Claude Code so the new commands load.
Upgrading: run /app-director (or /app-director:app-director with the plugin), or ask your assistant to run onboarding. It detects the existing install and carries out the upgrade steps of each CHANGELOG entry newer than your version, in order.
Upgrading the plugin: run /plugin marketplace update app-director and then /plugin update app-director@app-director. Restart Claude Code, open a new session in your app's folder, and run /app-director:app-director again.
What's changed
- New: your own product brief, a template to fill in, in your own words (
product/director-brief.md). Every app gets the template, whether it is new or already underway. Onboarding offers it before the interview, as an alternative to the chat interview or as an addition to it, and says why it helps: a written brief gives the assistant your intent and its context, and sets the stage for the design sessions and builds that follow. Fill it before onboarding, during it or later.- How it relates to the brief.
product/brief.mdstays the design record the assistant maintains. Your brief is input that stays as you wrote it: the assistant reads it, never edits it, and writes the current design into the brief's own sections, so each fact lives in one place. - Onboarding reads a filled one first. For a new app it takes the interview's answers from it and asks only what it leaves open. For an existing app it builds the initial assessment (Architecture rows, brief sections, first items) from it together with the code and the existing documents. It marks what it took
(from your brief)and what it worked out itself(inferred, please confirm), records decisions withwhy: from your brief, and turns the undecided into open questions. Tell the assistant when the brief changes and it bringsproduct/brief.mdin line. - Structure. The template is the director's own: executive summary, problem statement, goals and metrics, audience, value proposition and features, user experience, technical and operations considerations, launch strategy, risks and assumptions, and open questions.
- How it relates to the brief.
- Fix: the protected-space guard blocks absolute paths. The guard for
director/matched a file path only as written, so a write todirector/sent as an absolute path (<project>/director/x, or WindowsC:\...\director\x) got through. The hook now resolves the path against the project root before matching: Windows, Git Bash and POSIX forms,..segments and case-insensitive matching on Windows. Paths outside the project root, and folders nameddirectorelsewhere in it, are still allowed. If you rely ondirector/being read-only, this closes that gap. The selftest covers each form.- Upgrade steps: none. The hook is framework-owned and arrives on upgrade.
- Align checks the brief against reality.
align.md's item 6 is now "Brief against reality", in place of the Decisions spot-check. It reads the whole brief, checks every statement of state (a section marked later or planned, a count, a list of what exists, a line saying work waits on something, "once X exists") against the built app, the done items and the latest releases, and checks every decision line since the lastdocs: aligncommit one by one, not a sample. Mechanical drift gets fixed; design calls are reported with the stale statement named. The numbering of the other items is unchanged.- Upgrade steps: none. The procedure is framework-owned and arrives on upgrade.
- The README says how to update the plugin. The Install section gets an Upgrade part with the plugin update commands, as Godot-Director's and SaaSAllTheThings' READMEs have.
- Upgrade steps: none. The README belongs to the App Director repository, not to apps.
- The README says "an agreed placeholder". Its ownership line says human-owned areas get an agreed placeholder instead of generated content.
- Upgrade steps: none. The README belongs to the App Director repository, not to apps.
- The repository ignores OS metadata files.
.gitignorekeeps.DS_Store,Thumbs.db,desktop.iniand__MACOSX/out of the repository, as the Claude plugin directory's scanner requires.- Upgrade steps: none. The file belongs to the App Director repository, not to apps.
Upgrade steps
- The installer adds
product/director-brief.mdwhen the app doesn't have it (project seeds are copied once and never overwritten). After the upgrade, the assistant tells you it exists, where it is, and why writing it helps. If you fill it, the assistant reads it asONBOARDING.md› "Your own product brief" describes and bringsproduct/brief.mdin line, marking what it inferred. Nothing else in the app changes.
The other changes need no steps: the protected-space hook, the align procedure and the framework's own files arrive on upgrade.
v1.6.0
How to install
Designed to work with any AI coding assistant that reads AGENTS.md. Built and tested on Claude Code; other assistants are untested.
Your app needs git (git init if it has none) and no uncommitted changes. You also need bash (on Windows: Git for Windows) and gitleaks ≥ 8.18.0, except 8.19.0, which can't scan: use 8.19.1 or later (macOS: brew install gitleaks; Windows: winget install gitleaks).
Option 1: npx skill. In your app's folder, run:
npx skills add Freakling/App-Director
That installs the app-director skill for the assistant you choose in the prompt; in Claude Code it becomes the /app-director slash command. Ask your assistant to set up App Director. The skill fetches the latest App Director release outside your app and runs onboarding. To pick up a newer release later, run the command again.
Option 2: Claude Code plugin. In Claude Code:
/plugin marketplace add Freakling/App-Director
/plugin install app-director@app-director
The plugin installs the latest release. Then open a new Claude Code session in your app's folder (or run /reload-plugins), and run /app-director:app-director.
Option 3: manual clone. Clone the latest release next to your app as App-Director/. The release's tag is v followed by its version number, and the Releases page shows the latest one; replace <tag> in this command with it:
git clone --branch <tag> --depth 1 https://github.com/Freakling/App-Director.git App-Director
Then ask your assistant:
Read App-Director/ONBOARDING.md and follow it to install App Director into this project.
Upgrading: run /app-director (or /app-director:app-director with the plugin), or ask your assistant to run onboarding. It detects the existing install and carries out the upgrade steps of each CHANGELOG entry newer than your version, in order.
What's changed
- New:
/research, the research assistant (.app-director/procedures/research.md). When a design question depends on facts nobody has checked, or you ask for research, a read-onlyresearchersubagent looks into it in a fresh context and reports a note. It informs; you decide: its recommendation is one option shown with its reason, and it never records a decision, edits the brief orproduct/decisions.md, answers an Open Question, or asks you anything. It states its assumptions in the note instead.- Research is a task type. Research items get their own IDs,
R<n>, drawn from theNext IDsline like bugs. Instead ofDone whenthey haveQuestion:and, when they feed an open question,Informs: Q<n>. They are sized like any item, and the size picks the model. An item is done when its note exists. - Two ways to start. On the fly: a design session delegates a complex question, or you run
/research <question>, and the item is created and run at once. For later: queue the item, and list it underDepends onof the tasks that need its findings. A task that needs the decision stays gated by the open question itself. - The note. One dated file per topic in
product/research/, written by the orchestrator (the researcher writes no file): conclusion first, then options, a recommendation, sources with a tier and a confidence, and the date the claims were verified. A design session lists the notes on its topic before presenting options, and a decision that followed research ends itsproduct/decisions.mdline with the note's path. research-domain.mdadds what the researcher needs for apps: stacks and libraries (how a library is judged), licences, and app-store and platform requirements./next-taskhands research items to theresearcherinstead of the builder. Research changes no code, so no check runs and no review follows; the note and the records are committed together. A run goes on after a research item and lists the questions now ready for a design call./alignchecks theRcounter, the fields of research items, and that every done research item has a note.- Web access applies to every session.
settings.jsonnow allowsWebSearchandWebFetch. Claude Code can't scope a permission to one subagent, so the allow covers every session in the app, not only the researcher; the researcher's own tool list (Read, Grep, Glob, WebSearch, WebFetch) is what keeps it read-only. The evidence rules keep confidential project text out of public search queries. To keep them asking, add both to theasklist in.claude/settings.local.json. product/research/README.mdseeds the note folder. The README, ONBOARDING.md, the example and the behaviour scenarios list the command, andselftest.shchecks that the files exist, that the researcher has only its read, search and fetch tools, that settings allow web search and fetch, that the procedures are wired to it, and that a commit with only a note skips the project check.
- Research is a task type. Research items get their own IDs,
Upgrade steps
- In
TASKS.md, add anRcounter to theNext IDsline:**Next IDs:** T<n> · B<n> · R1. - Create
product/research/with the seedREADME.md(the installer copies it when missing). - Restart Claude Code so the
/researchskill, theresearcheragent and the changedsettings.jsonload.
WebSearch and WebFetch are allowed for every session in the app, not only for the researcher. If you want Claude Code to ask before each use, add both to the ask list in .claude/settings.local.json.
v1.5.0
How to install
Designed to work with any AI coding assistant that reads AGENTS.md. Built and tested on Claude Code; other assistants are untested.
Your app needs git (git init if it has none) and no uncommitted changes. You also need bash (on Windows: Git for Windows) and gitleaks ≥ 8.18.0, except 8.19.0, which can't scan: use 8.19.1 or later (macOS: brew install gitleaks; Windows: winget install gitleaks).
Option 1: npx skill. In your app's folder, run:
npx skills add Freakling/App-Director
That installs the app-director skill for the assistant you choose in the prompt; in Claude Code it becomes the /app-director slash command. Ask your assistant to set up App Director. The skill fetches the latest App Director release outside your app and runs onboarding. To pick up a newer release later, run the command again.
Option 2: Claude Code plugin. In Claude Code:
/plugin marketplace add Freakling/App-Director
/plugin install app-director@app-director
The plugin installs the latest release. Then open a new Claude Code session in your app's folder (or run /reload-plugins), and run /app-director:app-director.
Option 3: manual clone. Clone the latest release next to your app as App-Director/. The release's tag is v followed by its version number, and the Releases page shows the latest one; replace <tag> in this command with it:
git clone --branch <tag> --depth 1 https://github.com/Freakling/App-Director.git App-Director
Then ask your assistant:
Read App-Director/ONBOARDING.md and follow it to install App Director into this project.
Upgrading: run /app-director (or /app-director:app-director with the plugin), or ask your assistant to run onboarding. It detects the existing install and carries out the upgrade steps of each CHANGELOG entry newer than your version, in order.
What's changed
- The manual install clones the latest release. The README's manual option cloned
main, the integration branch, so a manual install got unreleased changes. It now clones the release tag (git clone --branch <tag> --depth 1), and says the tag isvfollowed by the version and where the latest one is listed. The manual upgrade wording still holds: put the new folder in and ask for ONBOARDING.md again. - The selftest expects setup-clone's refusal of gitleaks 8.19.0.
tools/setup-clone.shrefuses gitleaks 8.19.0 before it installs the pre-commit hook. The selftest's check for the installed hook now expects that refusal (exit 3, no hook) when the gitleaks on PATH is 8.19.0, and still expects the hook otherwise. A stand-in gitleaks 8.19.0 test proves the refusal in a fresh repository on any machine. The selftest's passthrough stand-in had hidden a real 8.19.0 from the check, so the check never reached the refusal. - Every install path gets the latest release. The skill, the fetch script and the Claude Code plugin now install the release tagged
v<version>;mainis where changes are integrated, not what people install. BothSKILL.mdfiles clone--branch v<version>into a fresh temporary folder, the way SaaSAllTheThings does, and delete it after onboarding. They no longer callscripts/fetch-app-director.sh, whose path (${CLAUDE_PLUGIN_ROOT}/scripts/...) doesn't exist outside the plugin. The fetch script fetches its own release tag, and a folder left by an earlier run moves to it instead of pullingmain. The marketplace names the plugin as agithubsource withrefv<version>, because Claude Code's relative-path source (./) can't pin a ref. The rootSKILL.mdandpackage.jsonsaid 1.0.0, andskills/app-director/SKILL.mdcarried no version; all now followVERSION.CLAUDE.md› For a release lists every file that carries the version and says each release is taggedv<version>once its pull request is merged.selftest.shchecks that they all agree withVERSION, and that the fetch script moves a reused folder to a new tag (a local repository stands in for GitHub). - The marketplace's
owneris an object..claude-plugin/marketplace.jsonhad"owner": "Freakling", whichclaude plugin validaterejects (expected object, received string). It is now{ "name": "Freakling" }, as in the other two frameworks.
Upgrade steps
None required for existing installs.
v1.4.0
How to install
Designed to work with any AI coding assistant that reads AGENTS.md. Built and tested on Claude Code; other assistants are untested.
Your app needs git (git init if it has none) and no uncommitted changes. You also need bash (on Windows: Git for Windows) and gitleaks ≥ 8.18.0, except 8.19.0, which can't scan: use 8.19.1 or later (macOS: brew install gitleaks; Windows: winget install gitleaks).
Option 1: npx skill. In your app's folder, run:
npx skills add Freakling/App-Director
That installs the app-director skill for the assistant you choose in the prompt; in Claude Code it becomes the /app-director slash command. Ask your assistant to set up App Director. The skill fetches App Director outside your app and runs onboarding.
Option 2: Claude Code plugin. In Claude Code:
/plugin marketplace add Freakling/App-Director
/plugin install app-director@app-director
Then open a new Claude Code session in your app's folder (or run /reload-plugins), and run /app-director:app-director.
Option 3: manual clone. Clone this repository next to your app as App-Director/:
git clone https://github.com/Freakling/App-Director.git App-Director
Then ask your assistant:
Read App-Director/ONBOARDING.md and follow it to install App Director into this project.
Upgrading: run /app-director (or /app-director:app-director with the plugin), or ask your assistant to run onboarding. It detects the existing install and carries out the upgrade steps of each CHANGELOG entry newer than your version, in order.
What's changed
- The fast check notices a removed or changed gitleaks.
tools/check.sh --if-changedrepeated the last result while the files were unchanged, so a gitleaks that was removed, or changed (such as to 8.19.0, which can't scan), went unnoticed until a file changed. The cached result now records gitleaks's version, or that it's missing, and a change to either runs the secrets step again. The fast path still makes onegitleaks versioncall.selftest.shchecks a reused pass, a changed version, the 8.19.0 downgrade, a removed gitleaks and a repeated failure with a stand-in gitleaks. - The secrets check says when gitleaks can't scan. gitleaks 8.19.0 fails every scan command, which the check read as credentials found on a clean tree.
tools/check.shnow exits 3 and says that gitleaks couldn't scan, with its own error line, and asks for gitleaks 8.19.1 or later. Any scan that fails with no finding in its report is reported that way, never as a finding. The minimum stays 8.18.0. - setup-clone.sh and the README no longer accept gitleaks 8.19.0.
setup-clone.shreported 8.19.0 as found and installed the pre-commit hook on it. It now exits 3 with the hint "gitleaks 8.19.0 can't scan (every command fails). Upgrade to 8.19.1 or later.", and the README names 8.19.0 as the exception. The minimum stays 8.18.0. - The upgrade-file check ignores nested clones.
git ls-fileslists a nested repository in an ignored folder (such as a clone inwork/) as a directory, which blocked every commit while no upgrade file existed. The pre-commit hook, the/aligncheck and onboarding now keep only paths that end in.adir-new, so a real upgrade file still blocks the commit. - selftest.sh checks that a nested clone in an ignored folder doesn't block a commit, and that a real upgrade file still does.
- The secrets check names the file with a finding, and works with gitleaks 8.18 and 8.30. The check printed only the report path, so the file with a secret wasn't named; it now lists each file with a finding (paths only; the values stay redacted). gitleaks 8.18 has no
dircommand, so the check scans withgitleaks detect --no-gitthere and withgitleaks dirfrom 8.19.1; 8.19.0 can't scan at all. - The pre-commit hook names the file with a secret. When gitleaks finds a secret in the staged changes, the hook lists each file with a finding (paths only; the values stay redacted), and gives the report's path for the Fingerprint. A scan that can't run is no longer reported as a finding: the hook says so and asks for 8.19.1 or later. The staged scan (
gitleaks protect --staged --report-path) works on the gitleaks releases checked from 8.18.0 to 8.30.1, all but 8.19.0. - A run can also be asked for as "grab tasks until you're blocked".
next-task.md(the request list and step 7), the/next-taskskill description, the README's day-to-day table and the behaviour scenarios now name it next to "the next N tasks" and "work through the queue". Each task in a run commits without pausing; the run stops when an item is blocked on the human, a build fails, or the human declines a commit. A single/next-taskstill pauses for approval.git commitis already allowed insettings.json; pushing and deploying keep asking. - README: Part of Director-Driven Development. A new section after the opening description links the Director-Driven Development article and the three frameworks built on it (Godot-Director, App-Director, SaaSAllTheThings).
Upgrade steps
None required for existing installs. The framework files arrive on upgrade; restart Claude Code so the changed skill description loads.
v1.3.0
Designed to work with any AI coding assistant that reads AGENTS.md. Built and tested on Claude Code; other assistants are untested.
How to install
Your app needs git (git init if it has none), bash (on Windows: Git for Windows), and gitleaks >= 8.18.0 (macOS: brew install gitleaks; Windows: winget install gitleaks).
Option 1: npx skill
npx skills add Freakling/App-Director
Ask your assistant to set up App Director, or in Claude Code run /app-director.
Option 2: Claude Code plugin
/plugin marketplace add Freakling/App-Director
/plugin install app-director@app-director
Open a new session in your app's folder (or run /reload-plugins), then run /app-director:app-director.
Option 3: manual clone (next to your app as App-Director/)
git clone https://github.com/Freakling/App-Director.git App-Director
Then ask your assistant: Read App-Director/ONBOARDING.md and follow it.
Upgrading: Run /app-director (or ask your assistant to run onboarding). It detects an existing install and applies only what has changed. From 1.2.x no manual steps are needed; restart Claude Code afterwards so /drift-reset loads. From 1.1.x, also follow the 1.2.0 upgrade steps (install gitleaks, run bash tools/setup-clone.sh in every clone).
What's in 1.3.0
/drift-reset: the design drift reset. When a principle in your brief has been built more than one way, patching one place makes the other worse. The reset rebuilds shared understanding instead. Align often, reset when you have to.
- Analyse as built (read-only): one fresh
reviewersubagent per architecture area describes how the app actually behaves today, withfile:linereferences, including business logic sitting in UI files. - Map interpretations (read-only): each brief principle is classed as consistent, divergent or contradictory, with the failure mode recorded.
- Rewrite the design (you decide): one design call per divergent or contradictory principle, with options, a recommendation, and room for your own answer. The old brief is archived; a human-owned or hook-protected brief gets a proposal file instead.
- Plan the rebuild: sized TASKS.md items naming the exact files each may touch. The rebuild runs through
/next-taskas normal. /drift-reset postmortem: after the rebuild, checks the app against the recorded failure modes and proposes new check rules as design calls, turning repeated judgment into checks.
Only you start a reset. It writes no application code, uses no destructive git commands, recommends its own branch, and keeps everything in product/resets/YYYY-MM-DD/.
Also in 1.3.0:
/alignnames the conflicts it reports in its commit body, and recommends/drift-resetwhen a conflict comes back or involves several principles.- The
revieweragent also runs drift-reset area analyses, still read-only. rules.mdrouting listsdrift-reset.mdand the previously missingrefresh-model-sizing.md.selftest.shchecks that every procedure is routed inrules.md, and the dash check now covers new files before they are committed.
Since 1.1.0
- 1.2.3: Design sessions show the relevant brief sections and decision-log lines before presenting options.
- 1.2.2: No en or em dashes in the repository;
selftest.shenforces it. - 1.2.1: Model sizing aligned: five capability tiers in
rules.md, escalation to the next size's model on a failed build, model IDs only in the refresh-model-sizing procedure. - 1.2.0: Gitleaks replaces the regex secrets scan, in the check and the pre-commit hook. Credential files are denied to the AI.
- 1.1.1: Canonical assistant-support wording.
v1.2.3
Designed to work with any AI coding assistant that reads AGENTS.md. Built and tested on Claude Code; other assistants are untested.
How to install
Your app needs git (git init if it has none), bash (on Windows: Git for Windows), and gitleaks >= 8.18.0 (macOS: brew install gitleaks; Windows: winget install gitleaks).
Option 1: npx skill
npx skills add Freakling/App-Director
Ask your assistant to set up App Director, or in Claude Code run /app-director.
Option 2: Claude Code plugin
/plugin marketplace add Freakling/App-Director
/plugin install app-director@app-director
Open a new session in your app's folder (or run /reload-plugins), then run /app-director:app-director.
Option 3: manual clone (next to your app as App-Director/)
git clone https://github.com/Freakling/App-Director.git App-Director
Then ask your assistant: Read App-Director/ONBOARDING.md and follow it.
Upgrading from 1.1.x: Run /app-director (or ask your assistant to run onboarding). It detects an existing install and applies only what has changed. Also run bash tools/setup-clone.sh in every clone to install gitleaks and the updated pre-commit hook, and add [gitleaks] min-version = 8.18.0 to tools/check.cfg.
What's in 1.2.3
- Design sessions show context before options. At the start of each design question the assistant now quotes or paraphrases the relevant brief sections and lists the related
product/decisions.mdlines verbatim, so the director sees the existing state of play before any options appear.
What changed in earlier 1.2.x patches
- 1.2.2: No en or em dashes anywhere in the repository. Ranges use a hyphen, explanations use a colon, asides use commas or parentheses.
selftest.shnow enforces this withgit grep. - 1.2.1: Model sizing aligned to canonical spec.
rules.mddefines the five tiers by capability (XS/S smallest, M balanced, L/XL most capable) without model IDs. Escalation generalised: a failed build retries once on the next size's model (XS to S, S to M, M to L, L to XL); XL failures stop and come to the director. Onboarding followsrefresh-model-sizing.mddirectly to check capability and write the block. Model IDs live only in the refresh-model-sizing procedure. - 1.2.0: Gitleaks replaces the regex secrets scan.
check.shstep 2 now runsgitleaks dir --redact; exits 3 if gitleaks is missing or below the minimum version; never falls back silently.pre-commitalso runsgitleaks protect --staged --redact.setup-clone.shverifies the version..claude/settings.jsondeniesReadon.env,*.pem,*.key(.env.examplestays readable).guard-commands.shblockscat/head/tailon those files. Project seeds.gitleaks.tomland.gitleaksignoreare seeded on first install.
What changed in 1.1.x
- 1.1.1: Canonical assistant-support wording throughout ("Built and tested on Claude Code; other assistants are untested"). Hedges and named-but-untested assistants removed.
v1.1.0
How to install
Your app needs git (git init if it has none) and bash (on Windows, Git for Windows provides it).
Option 1 — npx skill:
npx skills add Freakling/App-Director
Then ask your assistant to set up App Director, or in Claude Code run /app-director.
Option 2 — Claude Code plugin:
/plugin marketplace add Freakling/App-Director
/plugin install app-director@app-director
Open a new session in your app's folder (or run /reload-plugins), then run /app-director:app-director.
Option 3 — manual clone (next to your app as App-Director/):
git clone https://github.com/Freakling/App-Director.git App-Director
Then ask your assistant: Read App-Director/ONBOARDING.md and follow it.
Upgrading: Run /app-director (or ask your assistant to run onboarding). It detects an existing install and applies only what has changed.
What's in 1.1.0
- LICENSE. Root MIT license file added, identical to the copy installed into apps.
- README: Privacy and License. The License section now opens with a Privacy line linking PRIVACY.md, matching Godot-Director.
examples/todo-web/. Minimal worked example web app — AGENTS.md, TASKS.md, brief, decisions, and a three-layer TypeScript layout (src/ui/,src/services/,src/store/). Uses thenonestack so no compiler or test runner is required.examples/scenarios.md. Nine prompts that verify workflow behaviour (options-not-guesses, autonomous commits, guard hook, secrets refusal) after framework changes.selftest.sh. 65 automated tests. Covers: framework consistency (version, LICENSE match, skills→procedures), installer (fresh install, idempotence, local-edit preservation, conflict file, retired-file removal), check (pass on clean example, fail on planted UI purity violation, fail on planted secret, exit 3 on missing stack),guard-commands,guard-protected, stop-check and pre-commit hooks. No network access; no external tools required; fake credentials assembled at test time in a temp directory, never committed.- README "This repository" table updated to include examples and selftest.
Upgrade steps: None required for existing installs.
What was in earlier patches (1.0.x)
- 1.0.3: Role terminology aligned — orchestrator, builder, reviewer throughout.
- 1.0.2: Five-tier model sizing;
XS–XLeach map to their own model ID./refresh-model-sizingskill sets or updates the block. - 1.0.1: Autonomous commit mode — no pause for approval when you say "do the next N tasks".