Project creating
Create a new project from an implementation intent. Sets up project directory, git init, AGENTS.md with founding intent decisions, plastic-install --local, tactical mirror, projects.yml registration, and framework scaffolding. Use when an implementation intent spawns a project, or manually by user.From its SKILL.md
npx -y skills add zalom/plastic --skill project-creatingAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 11 stars11 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
6.0 KB, as published. Nobody here has run it
Creating a Project
Precondition
An active intent must exist with enough context to define a project — at minimum: name/slug, path, and key decisions from ## Context > ### Decisions.
Workflow
1. Determine Project Identity
- Slug: derived from intent name (kebab-case, 2-4 words) or user-specified
- Path: from
~/.plastic/config.ymlproject_roots(first entry as default), or user-specified - Confirm path with user before creation
2. Create Project Directory
mkdir -p <project_root>/<slug>
cd <project_root>/<slug>
git init
3. Run plastic-install --local
Invoke plastic-install --local in the project directory. This creates:
.plastic/
├── store/
├── INDEX.md
└── config.yml
4. Populate AGENTS.md
Create AGENTS.md in the project root from the skeleton in
references/project-scaffolding.md ("AGENTS.md skeleton"): read it now and fill in
the project name, governing intent IDs, decisions, and project-specific rules.
5. Create Tactical Mirror
Create the first intent in the project's store at ~/.plastic/projects/{slug}/store/
using the frontmatter, sections, and INDEX.md line in references/project-scaffolding.md
("Tactical mirror intent"), including the Hub multi-intent variant if there is more
than one founding intent.
Directory: ~/.plastic/projects/{slug}/store/1--{slug}/
File: ~/.plastic/projects/{slug}/store/1--{slug}/1--{slug}.md
6. Register in projects.yml
Read ~/.plastic/projects.yml and add the entry shown in
references/project-scaffolding.md ("projects.yml registration block"). For
Hub-spawned projects, parent references the primary founding intent.
7. Provision the Project Store
The provision-project-store verb is the single source of truth for store
creation. Run it after the project is registered in step 6 (the provisioner
requires registration), and before the QMD step:
ruby ~/.plastic/scripts/provision-project-store <slug>
This ensures ~/.plastic/projects/<slug>/store/ exists with .gitkeep, and
writes INDEX.md and project.yml only if missing. It is idempotent, so it is
safe even when the tactical mirror in step 5 already created the store directory.
Do not create the store with an inline mkdir; the provisioner is the only place
a store is made. For a project that is already registered but store-less, use the
plastic-store-provisioning skill instead.
8. Mark Global Intent(s) Completed
For each founding intent:
- Write
## Outcomein the intent file:"Spawned project
<slug>at<path>. Decisions carried to AGENTS.md. Tactical mirror:project-<slug>:1." - Write
outcome.mdwith full details (all decisions, project path, tactical mirror ID) - Update
chainto includeproject-<slug>:1 - Move from
## Activeto## Completedin~/.plastic/INDEX.md(with today's date)
9. Framework Scaffolding
If decisions specify a framework, run the appropriate scaffolding command AFTER steps 3-4 (so scaffolding doesn't overwrite Plastic files or AGENTS.md):
| Framework | Command |
|---|---|
| Rails | rails new <slug> [options from decisions] --skip-git (skip git — already initialized) |
| Node/npm | npm init -y |
| Ruby gem | bundle gem <slug> |
| Other | As specified in decisions |
After scaffolding, verify AGENTS.md and .plastic/ still exist. If scaffolding overwrote them, restore.
10. Auto-commit Both Stores
cd ~/.plastic && git add . && git commit -m "feat: spawn project <slug> from intent <ID>"
cd <project> && git add . && git commit -m "feat: initialize project from intent <ID>"
11. Register the project store with QMD (optional)
If QMD is installed, register the new project's store as a search collection:
ruby ~/.plastic/scripts/qmd-sync register --store ~/.plastic/projects/<slug>/store
qmd-sync no-ops when QMD is absent, so run it unconditionally. This adds the
plastic-<slug> collection and indexes it.
12. Self-Check with validate-project
Before announcing, verify the spawn actually landed everything it claims to have created. Run:
ruby ~/.plastic/scripts/validate-project <slug>
If this exits 0, proceed to step 13. If it exits non-zero, STOP: do not
proceed to Announce. Read the missing: and error lines it printed to
stderr, fix the named gap(s), for example:
- missing
project.ymlorINDEX.mdorstore/: re-runruby ~/.plastic/scripts/provision-project-store <slug>(step 7), then re-check - missing project-root
AGENTS.md: repeat step 4 (populate AGENTS.md at the project root, not~/.plastic/projects/<slug>/) - project directory missing on disk: repeat step 2
- not registered in projects.yml: repeat step 6
Re-run validate-project <slug> after each fix until it exits 0. Only a
project spawn that passes this self-check moves on to be announced as
created. A spawn that never verifies itself is exactly the bug this step
exists to close (intent 190; the intent-26 spawn shipped with no
project.yml and no root AGENTS.md, caught only weeks later by a doctor
sweep).
13. Announce
Log in ## Insights of each founding intent:
"Project
<slug>created at<path>. Tactical mirror:project-<slug>:1(autonomous)"
Announce to user:
"Project
<slug>created at<path>. AGENTS.md populated with [N] decisions from [founding intent IDs]. Tactical mirror1is now the active intent in the project store."
References
- Read
references/project-scaffolding.mdbefore steps 4-6, for the AGENTS.md skeleton, the tactical mirror intent format, and the projects.yml registration block - Read
references/hubs-projects.mdfor the full hub/project relationship model, project creation flow, and cross-linking conventions