Skip to content

v1.5.0

Choose a tag to compare

@Freakling Freakling released this 15 Oct 21:59
· 25 commits to main since this release
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.