architecture-model-bootstrap
Use to refine a generated Better Harness architecture model into a confirmed one for the Impact pane. Trigger when a project has no
它会碰到什么
这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。
技能内容
Architecture Model Bootstrap
Turn the deterministic candidate the Impact pane generates into a model a reader
can confirm. The server already derives a bounded, grounded skeleton from the
worktree (one SoftwareSystem, a Container per workspace, Components for source
directories). This skill does the semantic half a static analyzer cannot:
naming, grouping, kinding, describing, and proposing the external systems the
code only hints at — without inventing structure the evidence does not support.
Default to the repository's reply language. Keep edits grounded and reversible:
the output is a proposal a human saves, never a fact you assert.
When to use
- A project declares no model and the Impact pane falls back to a generated one.
- A reader wants the generated skeleton refined before saving it as declared.
- An existing declared model needs elements renamed, merged, split, re-kinded, or
described against current code.
Do not use it to invent business capabilities, runtime traffic, or external
systems that no evidence supports. L1 system context and external systems stay
proposed and human-confirmed, per the parent spec's non-goal.
Inputs (the evidence pack)
Gather these before proposing anything:
- The generated candidate. Open the Impact pane on any commit, or read the
model the server would generate — one SoftwareSystem, Containers per
workspace manifest, Components per source directory, every element tagged
generated, plus bindings mapping path globs to element ids.
- Workspace manifests.
package.json(root and nested), plus any
Cargo.toml, go.mod, pyproject.toml, or similar boundary markers.
- Directory evidence. The tracked path list and the top-level source layout,
so a proposed boundary points at real paths.
- Prose evidence.
README.md,AGENTS.md,docs/, ADRs — for names,
ownership, and declared external dependencies only, never for structure the
code contradicts.
Workflow
- Read the candidate and the manifests. Establish the real boundaries the
generator found before changing any of them.
- Name and describe. Replace generic ids/names (
packages-api,src) with
the project's own vocabulary. Give each kept element a one-line description
grounded in what its files do.
- Re-kind where evidence warrants. A deployable/independently owned unit is
a Container; an internal building block inside one is a Component. Do not
promote a directory to a Container without a boundary marker (a manifest, an
entrypoint, a deploy target).
- Merge and split. Fold sibling directories that are one component; split a
directory that clearly hosts two. Every resulting element keeps at least one
real path glob.
- Propose relationships you can ground in imports, HTTP clients, or declared
dependencies. Mark each with its kind (Contains, Imports, ResolvedCall,
DeclaredHttp, DeclaredRelationship). Leave an unresolved edge out rather
than guessing a target.
- Propose external systems and people only as clearly-labelled candidates,
with the evidence (a client, an env var, a README claim) named in the
description. These are the L1 scale the parent spec keeps human-confirmed.
- Validate the shape against [Model Schema](references/model-schema.md), then
hand the model and bindings back for the reader to save through the Impact
pane's Save as declared model action. Never write the file yourself unless
the reader asks.
Grounding rules (hard constraints)
- Every element you keep must have at least one binding whose path glob matches a
real tracked path. No element without evidence.
- Never invent a binding to a path that does not exist in the worktree.
- Keep the arch-core shape exactly:
elements(snake_caseparent_id) +
relationships (source_id/target_id). This is what the Impact host
consumes and what discovery validates.
- A directory is not a component and a repository is not a container. Boundaries
need a marker, not just a folder.
- Proposed external systems, people, and L1 context are candidates a human
confirms, labelled as such in their descriptions.
Output
Return two artifacts, ready for Save as declared model:
model.json— the refined{ elements, relationships }in arch-core's shape.bindings.json—[{ "path_glob": "...", "element_id": "..." }], every glob
resolvable in the worktree.
State briefly what you renamed, merged, split, re-kinded, and proposed, and which
elements remain low-confidence candidates a reader should check first.
想直接用这个技能?
本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。
它属于哪个仓库
.agents/skills/architecture-model-bootstrap/SKILL.md