Builds customer versions of the skill suite — idea → maquette → build — as start.md + one ZIP.
Version: see VERSION · September 2026 · https://github.com/ditomax/skill-suite-setup
This is the suite's setup tool. It takes the three skillset repos (idea, maquette, build) at pinned versions, adds a customer profile produced in a guided dialogue, and renders a delivery that the customer's IT unzips into a project folder. Nothing is installed or fetched at the customer; the agent reads planning/AGENTS.md / planning/CLAUDE.md when the folder is opened and acts as the right Director.
Two kinds of users:
- Anyone who wants the suite as one project folder — for their own organisation or for a customer, tailored or not:
new→ tailoring dialogue (optional) →check→build, as in Usage. Python ≥ 3.10 and the four clones are all it takes. The same route gives the prompt file for chat tools without folder access (prompt). - Maintainers of the skillsets additionally use
guard.py,release.pyandhooks/(see Customer-data guard) to keep customer data out of the public repos and to publish releases.
git clone https://github.com/ditomax/idea
git clone https://github.com/ditomax/maquette
git clone https://github.com/ditomax/build
git clone https://github.com/ditomax/skill-suite-setup
# all four side by side in one parent folder (the dev layout) — or pass --suites DIR to point elsewhere
cd skill-suite-setup
python3 setup.py new acme --code ACM --language de # scaffold customers/acme/
# run the tailoring dialogue (skills/setup/SKILL.md) or edit customers/acme/profile/*.md by hand
python3 setup.py check acme # versions vs compat.md, question IDs, profile files
python3 setup.py build acme # dist/acme-suite-v1.zip + dist/acme-start-v1.md
python3 setup.py prompt acme idea-collect # optional: idea's collect stage as one prompt file for chat tools without folder access
--customer-dir <path> keeps a customer's folder inside the customer project instead of customers/ (which is gitignored either way). A complete, fictitious customer is in examples/example — python3 setup.py build example --customer-dir examples shows the whole flow. Python ≥ 3.10, no dependencies.
AGENTS.md CLAUDE.md static pointer to planning/AGENTS.md — appended if the project already has one
start.md three steps for the human, in the customer's language, plus the update rule — static
planning/
AGENTS.md CLAUDE.md static pointer to suite/AGENTS.md
suite/
AGENTS.md CLAUDE.md the bootstrap: dispatch rule (which skillset is up), installed versions, hard limits, update rule
VERSION customer, build number, skillset versions, setup version, date
<idea|maquette|build>/ the ordered skillsets, pinned, standalone bootstraps stripped
profile/ the customer's constraints — only files with content
idea/ maquette/ build/ empty work folders
Everything that changes between builds lives under planning/suite/ and planning/profile/; everything else is static. So an update never deletes and never overwrites: move the two folders to planning/_archive/, then unzip -n (or extract elsewhere and move the two folders in). The rule is in start.md and in planning/suite/AGENTS.md, so a human or an agent can do it — also in sandboxes that forbid deleting.
The profile format is specified in PROFILE.md (owned here; derived from the design document in skill-suite-dev); the skillsets only read it. Files: profile.md (always), questions.md, scope.md, standards.md, it-constraints.md, design.md, import-formats.md, conventions.md, review.md. A profile may restrict, never loosen. questions.md tailors the questions each skillset asks, by the IDs in its QUESTIONS.md: skip with a value (shown as prefilled, confirmed once) or add after a named question.
Customer information must never reach a public repo or a ZIP, except the target customer's own profile. Four layers enforce it: setup.py build and release.py ship only an allowlist of files (never "everything minus"); guard.py scans every shipped file against a private marker list (../guard-markers.txt, outside every repo — one [group] per customer) and refuses other customers' markers in a profile and any marker in suite files; every profile file's first line must name its customer; and hooks/pre-commit (activate once per clone: git config core.hooksPath hooks) blocks commits with markers in all four repos.
python3 guard.py scan ../idea ../maquette ../build # clean?
python3 release.py maquette # public release ZIP, guarded, from git-tracked files only
setup.py new · check · build · prompt · list
guard.py customer-marker scan (scan / staged)
release.py public release ZIP of one skillset, guarded
hooks/pre-commit the guard as a git hook — copy of the one in each skillset repo
PROFILE.md the profile specification the skillsets read
compat.md version triples known to work together, with contract versions H1/H2
skills/setup/ the tailoring dialogue
templates/ root-AGENTS.md · planning-AGENTS.md · planning-pointer-AGENTS.md · start.en.md · start.de.md · customer.yaml · profile/*.md · prompt-idea-collect.md
customers/ gitignored — one folder per customer
examples/example/ a fictitious customer (Example GmbH) — the reference for a filled profile
AGENTS.md CLAUDE.md bootstrap for an agent working in this repo
CHANGELOG.md
dist/ gitignored — built ZIPs, start files, prompt files
tests/ smoke-test logs per platform
© 2026 Dietmar Millinger, MIT License (LICENSE).