Skip to content

Releases: Freakling/App-Director

v1.7.1

Choose a tag to compare

@Freakling Freakling released this 17 Oct 22:57
11b6d22

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.md has entries under ## Unreleased records # 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. VERSION stays 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

Choose a tag to compare

@Freakling Freakling released this 16 Oct 18:17
a6aca51

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.md stays 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 with why: from your brief, and turns the undecided into open questions. Tell the assistant when the brief changes and it brings product/brief.md in 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.
  • Fix: the protected-space guard blocks absolute paths. The guard for director/ matched a file path only as written, so a write to director/ sent as an absolute path (<project>/director/x, or Windows C:\...\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 named director elsewhere in it, are still allowed. If you rely on director/ 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 last docs: align commit 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. .gitignore keeps .DS_Store, Thumbs.db, desktop.ini and __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

  1. The installer adds product/director-brief.md when 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 as ONBOARDING.md › "Your own product brief" describes and brings product/brief.md in 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

Choose a tag to compare

@Freakling Freakling released this 15 Oct 22:32
995b55d

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-only researcher subagent 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 or product/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 the Next IDs line like bugs. Instead of Done when they have Question: 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 under Depends on of 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 its product/decisions.md line with the note's path.
    • research-domain.md adds what the researcher needs for apps: stacks and libraries (how a library is judged), licences, and app-store and platform requirements.
    • /next-task hands research items to the researcher instead 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.
    • /align checks the R counter, the fields of research items, and that every done research item has a note.
    • Web access applies to every session. settings.json now allows WebSearch and WebFetch. 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 the ask list in .claude/settings.local.json.
    • product/research/README.md seeds the note folder. The README, ONBOARDING.md, the example and the behaviour scenarios list the command, and selftest.sh checks 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.

Upgrade steps

  1. In TASKS.md, add an R counter to the Next IDs line: **Next IDs:** T<n> · B<n> · R1.
  2. Create product/research/ with the seed README.md (the installer copies it when missing).
  3. Restart Claude Code so the /research skill, the researcher agent and the changed settings.json load.

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

Choose a tag to compare

@Freakling Freakling released this 15 Oct 21:59
7617f53

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 is v followed 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.sh refuses 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>; main is where changes are integrated, not what people install. Both SKILL.md files clone --branch v<version> into a fresh temporary folder, the way SaaSAllTheThings does, and delete it after onboarding. They no longer call scripts/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 pulling main. The marketplace names the plugin as a github source with ref v<version>, because Claude Code's relative-path source (./) can't pin a ref. The root SKILL.md and package.json said 1.0.0, and skills/app-director/SKILL.md carried no version; all now follow VERSION. CLAUDE.md › For a release lists every file that carries the version and says each release is tagged v<version> once its pull request is merged. selftest.sh checks that they all agree with VERSION, and that the fetch script moves a reused folder to a new tag (a local repository stands in for GitHub).
  • The marketplace's owner is an object. .claude-plugin/marketplace.json had "owner": "Freakling", which claude plugin validate rejects (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

Choose a tag to compare

@Freakling Freakling released this 15 Oct 18:39
53769f5

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-changed repeated 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 one gitleaks version call. selftest.sh checks 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.sh now 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.sh reported 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-files lists a nested repository in an ignored folder (such as a clone in work/) as a directory, which blocked every commit while no upgrade file existed. The pre-commit hook, the /align check 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 dir command, so the check scans with gitleaks detect --no-git there and with gitleaks dir from 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-task skill 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-task still pauses for approval. git commit is already allowed in settings.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

Choose a tag to compare

@Freakling Freakling released this 09 Oct 12:32

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.

  1. Analyse as built (read-only): one fresh reviewer subagent per architecture area describes how the app actually behaves today, with file:line references, including business logic sitting in UI files.
  2. Map interpretations (read-only): each brief principle is classed as consistent, divergent or contradictory, with the failure mode recorded.
  3. 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.
  4. Plan the rebuild: sized TASKS.md items naming the exact files each may touch. The rebuild runs through /next-task as normal.
  5. /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:

  • /align names the conflicts it reports in its commit body, and recommends /drift-reset when a conflict comes back or involves several principles.
  • The reviewer agent also runs drift-reset area analyses, still read-only.
  • rules.md routing lists drift-reset.md and the previously missing refresh-model-sizing.md.
  • selftest.sh checks that every procedure is routed in rules.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.sh enforces 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

Choose a tag to compare

@Freakling Freakling released this 09 Oct 10:41

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.md lines 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.sh now enforces this with git grep.
  • 1.2.1: Model sizing aligned to canonical spec. rules.md defines 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 follows refresh-model-sizing.md directly 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.sh step 2 now runs gitleaks dir --redact; exits 3 if gitleaks is missing or below the minimum version; never falls back silently. pre-commit also runs gitleaks protect --staged --redact. setup-clone.sh verifies the version. .claude/settings.json denies Read on .env, *.pem, *.key (.env.example stays readable). guard-commands.sh blocks cat/head/tail on those files. Project seeds .gitleaks.toml and .gitleaksignore are 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

Choose a tag to compare

@Freakling Freakling released this 07 Oct 11:50

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 the none stack 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–XL each map to their own model ID. /refresh-model-sizing skill sets or updates the block.
  • 1.0.1: Autonomous commit mode — no pause for approval when you say "do the next N tasks".