agentsclimarketplace

Engagement scoping

Skill synaptiai/synapti-marketplace/plugins/dossier/skills/engagement-scoping

The Synapti Marketplace is a curated collection of Claude Code plugins designed for AI-augmented development + advanced analytical and research tasks. Each plugin provides specialized agents, skills, and commands that extend Claude Code's capabilities in specific domains.

Install
npx -y skills add synaptiai/synapti-marketplace --skill engagement-scoping

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 6 stars6 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.

What its author says it does

Copied from the file, not written here

Resolve the documentation engagement scope from the settings cascade — project identity, source roots, output root, delivery mode, action ceiling, confidentiality default, and the exact file set this run may touch — and freeze it to `<outputRoot>/00-control/.scope.json`. Use when any /dossier:* command starts, when the delivery mode changes, or when a run must prove it stayed inside its permitted boundary. This skill MUST be consulted because a run that widens its own scope mid-flight produces a package nobody can audit — the action ceiling and the touched-file set are decided before the first file is read and are immutable for the remainder of the run.

SKILL.md

8.4 KB, as published. Nobody here has run it

Engagement Scoping

Phase 0 of every dossier run. Establishes what this run is, what it may touch, and what it may do — before it reads a single source file.

Iron Law

RESOLVE SCOPE BEFORE READING ANYTHING. The action ceiling and the file set are fixed in Phase 0 and never widen mid-run.

A run that discovers a reason to read one more directory, execute one more command, or write one more file has stopped being auditable. Record the need as an AQ-#### row and finish inside the ceiling you started with.

Resolution order

Every value comes from bin/dossier-resolve-config.sh, never from reading a settings file directly — reading one directly skips four layers of the cascade. See references/config-resolution.md.

OUTPUT_ROOT=$(bin/dossier-resolve-config.sh --default "docs/dossier" dossier.project.outputRoot)
MODE=$(bin/dossier-resolve-config.sh --default "full" dossier.engagement.deliveryMode)
bin/dossier-validate-config.sh || echo "config findings above must be resolved before drafting"

Validate before scoping. A config that fails dossier-validate-config.sh produces a package whose containment guarantees do not hold, and finding that out in Phase 5 wastes the whole run.

The twelve inputs

InputConfig keyWhen absent
Project nameproject.nameBlocking in full/targeted. Ask — never infer, because an inferred product name propagates into public documents
Missionproject.missionRecord U. Derive what evidence supports; never invent intent
Sourcesproject.sourcesBlocking in full/targeted
Output rootproject.outputRootBlocking in every mode
Version or commitproject.versionOrCommitauto resolves the current SHA and pins it for the whole run
Due-diligence contextengagement.dueDiligenceContextProduce a general technical and product readiness assessment. Never invent transaction-specific acceptance criteria
Stakeholdersengagement.stakeholdersOwnership is unassigned, which is a true statement; a plausible name is a false one
Constraintsengagement.constraintsEach constraint that blocks a check becomes a not executed reason, not an unexplained gap
Disclosure policydisclosure.policyDefaults to internal-only — draft the public documents fully, release none
Regulatory contextengagement.regulatoryIdentify candidates; applicability is itself a claim needing evidence
Allowed actionsengagement.allowedActionsRestrictive defaults. The safe failure is an honestly-labelled unverified claim, not an unauthorized action
Delivery modeengagement.deliveryModefull

Delivery modes

ModeInspectionWritesCompletion condition
fullThe whole scopeCreates or rebuilds all 23 filesEvery canonical file exists with a status and a last-verified date
targetedChanged evidence first, then everything downstream of itOnly affected documents and their dependentsAffected set updated and the whole package re-checked for contradictions — a targeted refresh that skips the package-wide contradiction sweep is a full run with holes
verification-onlyThe existing package plus the sources needed to check it07-verification/ only, unless allowedActions permits repairThe verification report is written and the gate verdict issued

targeted resolves its blast radius through bin/dossier-blast-radius.sh and references/change-triggers-and-blast-radius.md. The changed-evidence set is the input; the affected-document set plus every document that consumes a changed claim is the output.

The action ceiling

engagement.allowedActions is not advice. hooks/scripts/enforce-output-root.sh and enforce-allowed-actions.sh block violations at PreToolUse, so a scope decision recorded here is a scope decision enforced.

ActionOff means
runBuild / runTestsEvery setup, build, and test claim is not executed with a reason — never assumed to pass
networkAccessVendor lifecycle, CVE, and license claims are labelled rather than answered from model memory
readSecretsRecord a secret's type, location category, and rotation need. Never its value
writeOutsideOutputRootThe package is the only artifact. Unrelated user work is preserved untouched
contactHumansNon-blocking unknowns go to the open-questions register instead of stalling the run — the default in CI

Classifying the project

Classify from evidence before scoping the inspection, because the classification changes which sources matter. Record the classification with its supporting evidence IDs — a wrong classification produces a subtly wrong package. See references/project-type-adaptation.md.

Structure never adapts. All 8 directories and all 23 files exist for every project type; only emphasis and justified N/A change.

Large scopes

When the scope exceeds one context, build an inspection map and process it in bounded batches. Record the batch boundaries in the scope file.

Never silently skip a directory, a service, or an evidence class. A skipped area is an inspection-coverage gap with an AQ-#### row, and it appears in the evidence ledger's source-inventory section. Silence here is indistinguishable from "we looked and found nothing".

Output Format

Write <outputRoot>/00-control/.scope.json and emit the summary below. The file is the run's contract; later phases read it rather than re-resolving config.

{
  "schema_version": 1,
  "resolved_at": "<ISO-8601>",
  "project": { "name": "", "type": "", "version_or_commit": "", "sources": [] },
  "output_root": "",
  "delivery_mode": "full | targeted | verification-only",
  "allowed_actions": {},
  "disclosure": { "policy": "", "confidentiality_default": "", "approval": "" },
  "touchable_paths": [],
  "inspection_batches": [],
  "blocking_gaps": [],
  "access_limitations": []
}
### Scope

| Field | Value | Source layer |
|-------|-------|--------------|
| {input} | {value} | env / local / project / user / plugin / default |

### Work plan
{ordered phases for this delivery mode}

### Source access limitations
| Evidence class | Available? | Effect on the package |
|---|---|---|

### Blocking gaps
{questions that must be answered before drafting, or `none`}

Non-blocking unknowns never appear in "blocking gaps". They go to the register and the run continues.

Rationalization Prevention

ExcuseResponse
"I need to read one file outside sources to understand this"Then sources was wrong. Record an AQ-#### and finish inside the ceiling.
"Running the test suite would verify so much at once"Not with runTests: false. Mark the claims not executed and say why.
"The project name is obvious from package.json"Obvious to you. It goes in every header and every public document. Ask.
"Disclosure policy is unset but this is clearly public"Unset means internal-only. Draft everything, release nothing.
"I will note the scope after I see what's there"Then the scope is whatever you found, which is not a scope.
"This is a small project, the mode does not matter"The mode decides whether a contradiction sweep runs. It matters most when the package looks easy.

Integration

Invoked first by /dossier:init, /dossier:baseline, /dossier:refresh, /dossier:audit, and /dossier:gate. dossier-evidence-collector loads it to know its inspection boundary. Every other skill reads .scope.json rather than re-resolving configuration.

References: references/config-resolution.md, references/project-type-adaptation.md, references/change-triggers-and-blast-radius.md.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.