affected-scopelisted
Install: claude install-skill g-bastianelli/nuthouse
> Workflow kernel: When this skill needs a workflow/profile decision and no valid parent manifest is supplied, use this plugin's install-local `lib/workflow/index.mjs` explicit-skill resolver. Claude hooks are optional accelerators; a missing or failed hook falls back once to that local path. Warden must not be required. When verification is required and Moon Moth is unavailable, use non-empty commands from repository-owned instructions or build metadata, or block completion.
# moon-moth — affected scope contract
The **scope map** is the structured artifact the `affected-scout` agent returns
and the `scope` / `implement` / `verify` skills consume. It is the moon-moth's
field of light: the exact set of projects the moth will land on, and nothing
else. Everything outside it is "the dark" — deliberately not scanned.
Skills and agents MUST exchange this shape (JSON). Marker `_dark_` means "no
affected projects found — the working tree is clean or untracked".
## Schema
```json
{
"moonRoot": "/abs/path/to/workspace",
"base": "working-tree | default-branch | <sha>..<sha>",
"changedFiles": ["apps/atlas/api/src/foo.ts", "libs/types/src/bar.ts"],
"affected": [
{
"id": "atlas-api",
"source": "apps/atlas/api",
"layer": "application",
"stack": "backend",
"tags": ["buildable-image"],
"tasks": ["typecheck", "lint", "test"],
"reason": "changed | upstream-of-changed | downstream-of-changed"
}
],
"downstream": ["atlas-app"],