mcs-external-positioning
Overview
This repo is pre-1.0 (issue #3, open, 0 of 22 boxes checked as of 2026-07-05, re-verify with gh issue view 3 --json body -q .body | grep -c '\- \[ \]') and is actively mutating under a live ship run. Public claims must be evidence-backed today, not aspirational, and must not overstate what a fresh clone (no owner-only private repo, no owner's machine) actually gets. Core principle: rank claims by demonstrated evidence, not by design intent; anything without committed proof is "candidate," not "shipped."
When to use, and when NOT to
Use for: drafting/reviewing public-facing claims (README pitch, launch checklist sign-off, "what makes this different"), v1.0 readiness verdicts, license/attribution audits before release, and structuring (never resolving) the privacy/history-exposure decision.
Do NOT use for:
- Fixing README/ARCHITECTURE drift itself (the numbers, the file paths): that's
mcs-docs-of-record.
- Judging whether a technique is a genuine research contribution: that's
mcs-research-frontier.
- Executing the actual git-history scrub, force-push, or BFG pass: no skill does this; it is an owner-only action, never automated.
Positioning inventory (ranked by evidence strength, verified 2026-07-02)
- Acceptance-contract-gated autonomous execution.
hooks/acceptance-gate.sh, wired PreToolUse on TaskUpdate (lines 69/75 as of 2026-07-05 via grep -n '"PreToolUse"\|acceptance-gate' settings.json; approximate only, re-grep before citing, since settings.json is under active rewrite), denies (exit 2) completion while unverified criteria remain; selects the contract by mtime, skips stale ones. Took 3 fail-open bugs to reach this state (299a264 → 6bc7c1a → 4bb8bf2 → 605112d). Live proof: today's session verified AC-001..AC-006 with real pytest runs before merging PR #67/#68. Gap: no observed case of it catching a real regression, only "fail-open bug" or "criteria passed". Claim "gates completion," not "catches bugs."
- Shared-engine multi-theme council on native Workflow substrate.
commands/_council-engine.md (1,753 lines) is parameterized by 14 $THEME_ID-style variables; two themes instantiate it: commands/council.md (public) and commands/ece.md (private-repo symlink, undocumented in README/ARCHITECTURE). Backend fallback workflow → teams → sequential is real and recorded per session. Gap: the substrate is Anthropic's, not this repo's differentiator (claim the degradation design, not the tools); say "proven by two themes, one public," not "multiple public themes."
- Enforced skill-governance pipeline with 3-tier evals. Pre-commit Tier 1 (static) is real and hard-blocking (
skill-frontmatter, skill-references, skill-isolation, skill-context-load, skill-commit-msg; skill-token-budget/skill-prose-check warn-only, per .pre-commit-config.yaml). Spec defines Tier 2 (E2E via claude -p) and Tier 3 (LLM-as-judge) at pipeline/specs/SKILL-GOVERNANCE-SPEC.md §7.6, with working scripts (run-evals.sh, judge-skill-quality.sh). Gap: Tiers 2-3 are not wired into CI or pre-commit, zero committed run output. Claim "Tier 1 static enforcement is continuous; Tiers 2-3 are unexercised tooling," not "3-tier enforcement."
Commodity, don't lead with these: the skills/commands/agents collection itself (many public repos do this); the symlink-based installer; project scaffolding commands (/new-python, /new-terraform). Competent execution, not novelty.
Cross-cutting gap for all three ranked claims: zero committed cost or quality telemetry for council sessions. skills/council/registry.json (v2.1) tracks per-skill usage counts only (uses, last_used, sessions), no token cost, latency, or quality score. (grep -n cost skills/council/registry.json matches only a skill named cost-analysis, not a telemetry field.) Any "council sessions are cheap/fast/high-quality" claim is unmeasured: label it "candidate, no telemetry."
v1.0 readiness ledger
Full issue-#3 checklist with live per-item verification: references/v1-readiness-ledger.md. Headline blockers as of 2026-07-02:
- Docs accuracy: README's agent/skill/command counts are drifted from reality. Fix routes to
mcs-docs-of-record; this skill only flags it as a v1.0 gate.
- Third-party notices:
THIRD_PARTY_NOTICES.md lists 2 dead directories (skills/terraform-skill/, skills/tdd/) and misses 2 real adaptations (agentic-council v1.2.0, steipete-derived skill-audit tooling). See Licensing below.
- CI/security gates:
validate.yml (ubuntu+macos) + secret-scan (gitleaks) are required status checks, but enforce_admins: false and required_approving_review_count: 0; CODEOWNERS exists but isn't enforced. Vulnerability alerts and Dependabot security updates are enabled; Dependabot version updates cover only GitHub Actions, not mcp/openrouter's Python deps.
- Onboarding validation: issue #3 requires 3+ onboarding feedback reports via the issue template; zero exist.
- Private-repo coupling (unstated blocker): 7 symlinks point into
$HOME/Development/my-claude-setup-private. install.sh's existence guards silently skip broken symlinks, so a fresh clone's install is functionally fine; gap is cosmetic. Tracked by open issue #65 (US-007, queued).
- Machine-local paths in settings.json (unstated blocker): 2 hardcoded
/Users/danielsong/... paths remain (OpenRouter MCP command, research-toolkit-local marketplace), opt-in only but non-functional for anyone else. No issue owns this gap yet.
- README prerequisites incomplete:
python3 is a hard install.sh dependency, absent from README's Prerequisites list.
- Newly resolved, don't carry forward: prior "fresh clone gets broken telemetry hooks" is fixed as of PR #67 (2026-07-02):
hooks/telemetry-dispatch.sh is fail-soft, wired to all 5 events, zero private-repo strings remain in settings.json.
Privacy and history exposure: decision framing only, no action
Real personal content is exposed on two different surfaces (corrected 2026-07-06): SOC/security and ECE content IS reachable from pushed remote refs (6 branches); the named individual's resume was never on main and survives only as one orphaned commit object on a fork, a much smaller exposure. Full options ledger, exact refs, and consequences: references/privacy-history-exposure.md. This skill states options; it never recommends or executes one. Deleting remote refs or rewriting pushed history (BFG/force-push) is irreversible-in-practice and owner-only. Do not perform it, do not suggest a default, and do not treat commit 69cdb56's "scrubbing history is a separate decision" note as consent.
Licensing and attribution
- Root license: MIT, copyright 2025 Daniel Song (
LICENSE:1-3).
THIRD_PARTY_NOTICES.md has 3 entries: skills/terraform-skill/ (stale, directory deleted), skills/vercel-react-best-practices/ (accurate stub), skills/tdd/ (stale, directory deleted; only commands/tdd.md redirect stub remains).
- Missing attribution: the
agentic-council v1.2.0 orchestration adoption (commit 9cee199) and the steipete/agent-scripts skill-cleaner-derived audit tooling. Both real, neither in THIRD_PARTY_NOTICES.md or docs/upstream-sources.md (the latter is documented only in prose inside pipeline/scripts/README.md's "Origin" section, uncross-referenced).
- A maintenance procedure exists (
docs/upstream-sources.md) but nothing enforces it: no hook checks notice entries against actual directory existence, which is why it drifted silently twice.
Reproducibility standard for any public claim
A public claim needs a fresh-clone quickstart that actually works, or it doesn't ship.
./install.sh --dry-run --preset skills runs clean; private-repo symlinks are silently skipped by design ([[ -d ]] on a broken symlink is false), verified by reading install.sh:83-149, not by an executed absent-private-repo CI run. Label this "verified by code inspection," not "verified by CI."
- No CI job actually simulates the absent-private-repo state; the ubuntu/macos matrix runs inside this same checkout.
- Benchmark/token numbers: never present an estimate as a measurement. The only committed telemetry today is
skills/council/registry.json usage counts (18 total uses as of 2026-07-02). No cost, latency, or token data is committed anywhere. Any number not traceable to a git show-able file is an estimate and must be labeled one.
Gotchas
- WRONG: "First system with acceptance-contract-gated autonomous execution." RIGHT: state what's verified and stop; novelty claims belong to
mcs-research-frontier.
- WRONG: assuming
THIRD_PARTY_NOTICES.md is complete because it's well-formatted. Check both directions: every listed path exists, every real adaptation has an entry.
- WRONG: treating
registry.json's usage counts as quality or cost evidence: no cost/quality/outcome field exists.
- WRONG: assuming PR review is required for main.
enforce_admins: false means the owner can and does push directly.
- WRONG: reading "install.sh is stable" from CI alone: CI smoke-tests
skills/core only, never full.
- WRONG: quoting README's agent/skill counts in a launch post: pull live counts at write time (
mcs-docs-of-record owns the fix).
- SILENT FAILURE:
settings.json's 2 hardcoded personal paths only surface as a broken MCP entry for a --with-settings opt-in, no install-time error.
- Everything here drifts fast under the live ship run. Re-run Provenance commands before repeating any number publicly.
Provenance and maintenance
Last verified: 2026-07-05, against a live, actively-mutating repo (PRs #67-#70 merged since original authoring, US-002 model tier alias / US-003 permissions rewrite / US-004 OpenRouter model ID refresh / settings schema guard work). Re-verify every fact below before reusing it.
| Fact |
Re-verification command |
| Issue #3 checkbox count |
gh issue view 3 --json body -q .body | grep -c '\- \[ \]' |
| PreToolUse/acceptance-gate.sh line position in settings.json (approximate, expect drift) |
grep -n '"PreToolUse"' settings.json; grep -n acceptance-gate settings.json |
| THIRD_PARTY_NOTICES stale entries |
ls skills/terraform-skill skills/tdd 2>&1 (expect "No such file") |
| Missing agentic-council/steipete attribution |
grep -in "agentic-council|steipete" THIRD_PARTY_NOTICES.md docs/upstream-sources.md (expect no match) |
| Branch protection review/admin settings |
gh api repos/dtsong/my-claude-setup/branches/main/protection -q '{reviews:.required_pull_request_reviews.required_approving_review_count, admins:.enforce_admins.enabled}' |
| Vulnerability alerts / Dependabot security updates |
gh api repos/dtsong/my-claude-setup -q .security_and_analysis |
| Onboarding feedback report count |
gh issue list --search "onboarding" --state all --json number,title |
| Private-repo symlink list |
find skills commands -maxdepth 1 -type l -exec sh -c 'readlink "$1" | grep -q private && echo "$1"' _ {} \; |
| Machine-local hardcoded paths in settings.json |
grep -n '/Users/danielsong' settings.json |
| registry.json has no cost/quality field |
python3 -c "import json;print(list(json.load(open('skills/council/registry.json')).keys()))" |
| Pushed refs holding personal content |
git branch -r | grep -E "worktree-agent|renovate" |
| Governance pre-commit hard vs warn tiers |
grep -B1 "(hard)|(warn)" .pre-commit-config.yaml |
| Eval Tier 2/3 wiring into CI |
grep -rn "run-evals|judge-skill-quality" .github/workflows/ .pre-commit-config.yaml (expect no match) |
1---2name: mcs-external-positioning3description: Use when deciding what this project (my-claude-setup) may claim publicly (README pitch, launch post, "why is this different" answers, OSS release announcements), when someone asks for a v1.0/launch readiness verdict against GitHub issue 3 (the v1.0 tracking issue), when evaluating third-party attribution or license compliance before a release, or when history/privacy exposure (real personal data reachable in pushed git refs) needs a decision framed for the owner. Not for fixing drifted docs (mcs-docs-of-record) or for open-research novelty claims (mcs-research-frontier).4---56# mcs-external-positioning78## Overview910This repo is pre-1.0 (issue #3, open, 0 of 22 boxes checked as of 2026-07-05, re-verify with `gh issue view 3 --json body -q .body | grep -c '\- \[ \]'`) and is actively mutating under a live ship run. Public claims must be evidence-backed today, not aspirational, and must not overstate what a fresh clone (no owner-only private repo, no owner's machine) actually gets. Core principle: rank claims by demonstrated evidence, not by design intent; anything without committed proof is "candidate," not "shipped."1112## When to use, and when NOT to1314Use for: drafting/reviewing public-facing claims (README pitch, launch checklist sign-off, "what makes this different"), v1.0 readiness verdicts, license/attribution audits before release, and structuring (never resolving) the privacy/history-exposure decision.1516Do NOT use for:17- Fixing README/ARCHITECTURE drift itself (the numbers, the file paths): that's `mcs-docs-of-record`.18- Judging whether a technique is a genuine research contribution: that's `mcs-research-frontier`.19- Executing the actual git-history scrub, force-push, or BFG pass: no skill does this; it is an owner-only action, never automated.2021## Positioning inventory (ranked by evidence strength, verified 2026-07-02)22231. **Acceptance-contract-gated autonomous execution.** `hooks/acceptance-gate.sh`, wired `PreToolUse` on `TaskUpdate` (lines 69/75 as of 2026-07-05 via `grep -n '"PreToolUse"\|acceptance-gate' settings.json`; approximate only, re-grep before citing, since settings.json is under active rewrite), denies (exit 2) completion while unverified criteria remain; selects the contract by mtime, skips stale ones. Took 3 fail-open bugs to reach this state (299a264 → 6bc7c1a → 4bb8bf2 → 605112d). Live proof: today's session verified AC-001..AC-006 with real pytest runs before merging PR #67/#68. Gap: no observed case of it *catching* a real regression, only "fail-open bug" or "criteria passed". Claim "gates completion," not "catches bugs."242. **Shared-engine multi-theme council on native Workflow substrate.** `commands/_council-engine.md` (1,753 lines) is parameterized by 14 `$THEME_ID`-style variables; two themes instantiate it: `commands/council.md` (public) and `commands/ece.md` (private-repo symlink, undocumented in README/ARCHITECTURE). Backend fallback `workflow → teams → sequential` is real and recorded per session. Gap: the substrate is Anthropic's, not this repo's differentiator (claim the degradation design, not the tools); say "proven by two themes, one public," not "multiple public themes."253. **Enforced skill-governance pipeline with 3-tier evals.** Pre-commit Tier 1 (static) is real and hard-blocking (`skill-frontmatter`, `skill-references`, `skill-isolation`, `skill-context-load`, `skill-commit-msg`; `skill-token-budget`/`skill-prose-check` warn-only, per `.pre-commit-config.yaml`). Spec defines Tier 2 (E2E via `claude -p`) and Tier 3 (LLM-as-judge) at `pipeline/specs/SKILL-GOVERNANCE-SPEC.md` §7.6, with working scripts (`run-evals.sh`, `judge-skill-quality.sh`). Gap: Tiers 2-3 are **not wired into CI or pre-commit**, zero committed run output. Claim "Tier 1 static enforcement is continuous; Tiers 2-3 are unexercised tooling," not "3-tier enforcement."2627**Commodity, don't lead with these:** the skills/commands/agents collection itself (many public repos do this); the symlink-based installer; project scaffolding commands (`/new-python`, `/new-terraform`). Competent execution, not novelty.2829**Cross-cutting gap for all three ranked claims:** zero committed cost or quality telemetry for council sessions. `skills/council/registry.json` (v2.1) tracks per-skill **usage counts** only (`uses`, `last_used`, `sessions`), no token cost, latency, or quality score. (`grep -n cost skills/council/registry.json` matches only a skill named `cost-analysis`, not a telemetry field.) Any "council sessions are cheap/fast/high-quality" claim is unmeasured: label it "candidate, no telemetry."3031## v1.0 readiness ledger3233Full issue-#3 checklist with live per-item verification: `references/v1-readiness-ledger.md`. Headline blockers as of 2026-07-02:3435- **Docs accuracy**: README's agent/skill/command counts are drifted from reality. Fix routes to `mcs-docs-of-record`; this skill only flags it as a v1.0 gate.36- **Third-party notices**: `THIRD_PARTY_NOTICES.md` lists 2 dead directories (`skills/terraform-skill/`, `skills/tdd/`) and misses 2 real adaptations (`agentic-council v1.2.0`, steipete-derived skill-audit tooling). See Licensing below.37- **CI/security gates**: `validate.yml` (ubuntu+macos) + `secret-scan` (gitleaks) are required status checks, but `enforce_admins: false` and `required_approving_review_count: 0`; CODEOWNERS exists but isn't enforced. Vulnerability alerts and Dependabot security updates are enabled; Dependabot version updates cover only GitHub Actions, not `mcp/openrouter`'s Python deps.38- **Onboarding validation**: issue #3 requires 3+ onboarding feedback reports via the issue template; zero exist.39- **Private-repo coupling (unstated blocker)**: 7 symlinks point into `$HOME/Development/my-claude-setup-private`. `install.sh`'s existence guards silently skip broken symlinks, so a fresh clone's install is functionally fine; gap is cosmetic. Tracked by open issue #65 (US-007, queued).40- **Machine-local paths in settings.json (unstated blocker)**: 2 hardcoded `/Users/danielsong/...` paths remain (OpenRouter MCP command, `research-toolkit-local` marketplace), opt-in only but non-functional for anyone else. No issue owns this gap yet.41- **README prerequisites incomplete**: `python3` is a hard `install.sh` dependency, absent from README's Prerequisites list.42- **Newly resolved, don't carry forward**: prior "fresh clone gets broken telemetry hooks" is fixed as of PR #67 (2026-07-02): `hooks/telemetry-dispatch.sh` is fail-soft, wired to all 5 events, zero private-repo strings remain in `settings.json`.4344## Privacy and history exposure: decision framing only, no action4546Real personal content is exposed on two different surfaces (corrected 2026-07-06): SOC/security and ECE content IS reachable from pushed remote refs (6 branches); the named individual's resume was never on `main` and survives only as one orphaned commit object on a fork, a much smaller exposure. Full options ledger, exact refs, and consequences: `references/privacy-history-exposure.md`. This skill states options; it never recommends or executes one. Deleting remote refs or rewriting pushed history (BFG/force-push) is irreversible-in-practice and owner-only. Do not perform it, do not suggest a default, and do not treat commit 69cdb56's "scrubbing history is a separate decision" note as consent.4748## Licensing and attribution4950- Root license: MIT, copyright 2025 Daniel Song (`LICENSE:1-3`).51- `THIRD_PARTY_NOTICES.md` has 3 entries: `skills/terraform-skill/` (stale, directory deleted), `skills/vercel-react-best-practices/` (accurate stub), `skills/tdd/` (stale, directory deleted; only `commands/tdd.md` redirect stub remains).52- Missing attribution: the `agentic-council v1.2.0` orchestration adoption (commit `9cee199`) and the steipete/agent-scripts `skill-cleaner`-derived audit tooling. Both real, neither in `THIRD_PARTY_NOTICES.md` or `docs/upstream-sources.md` (the latter is documented only in prose inside `pipeline/scripts/README.md`'s "Origin" section, uncross-referenced).53- A maintenance procedure exists (`docs/upstream-sources.md`) but nothing enforces it: no hook checks notice entries against actual directory existence, which is why it drifted silently twice.5455## Reproducibility standard for any public claim5657A public claim needs a fresh-clone quickstart that actually works, or it doesn't ship.5859- `./install.sh --dry-run --preset skills` runs clean; private-repo symlinks are silently skipped by design (`[[ -d ]]` on a broken symlink is false), verified by reading `install.sh:83-149`, not by an executed absent-private-repo CI run. Label this "verified by code inspection," not "verified by CI."60- No CI job actually simulates the absent-private-repo state; the ubuntu/macos matrix runs inside this same checkout.61- Benchmark/token numbers: never present an estimate as a measurement. The only committed telemetry today is `skills/council/registry.json` usage counts (18 total uses as of 2026-07-02). No cost, latency, or token data is committed anywhere. Any number not traceable to a `git show`-able file is an estimate and must be labeled one.6263## Gotchas6465- WRONG: "First system with acceptance-contract-gated autonomous execution." RIGHT: state what's verified and stop; novelty claims belong to `mcs-research-frontier`.66- WRONG: assuming `THIRD_PARTY_NOTICES.md` is complete because it's well-formatted. Check both directions: every listed path exists, every real adaptation has an entry.67- WRONG: treating `registry.json`'s usage counts as quality or cost evidence: no cost/quality/outcome field exists.68- WRONG: assuming PR review is required for main. `enforce_admins: false` means the owner can and does push directly.69- WRONG: reading "install.sh is stable" from CI alone: CI smoke-tests `skills`/`core` only, never `full`.70- WRONG: quoting README's agent/skill counts in a launch post: pull live counts at write time (`mcs-docs-of-record` owns the fix).71- SILENT FAILURE: `settings.json`'s 2 hardcoded personal paths only surface as a broken MCP entry for a `--with-settings` opt-in, no install-time error.72- Everything here drifts fast under the live ship run. Re-run Provenance commands before repeating any number publicly.7374## Provenance and maintenance7576Last verified: 2026-07-05, against a live, actively-mutating repo (PRs #67-#70 merged since original authoring, US-002 model tier alias / US-003 permissions rewrite / US-004 OpenRouter model ID refresh / settings schema guard work). Re-verify every fact below before reusing it.7778| Fact | Re-verification command |79|---|---|80| Issue #3 checkbox count | `gh issue view 3 --json body -q .body \| grep -c '\- \[ \]'` |81| PreToolUse/acceptance-gate.sh line position in settings.json (approximate, expect drift) | `grep -n '"PreToolUse"' settings.json; grep -n acceptance-gate settings.json` |82| THIRD_PARTY_NOTICES stale entries | `ls skills/terraform-skill skills/tdd 2>&1` (expect "No such file") |83| Missing agentic-council/steipete attribution | `grep -in "agentic-council\|steipete" THIRD_PARTY_NOTICES.md docs/upstream-sources.md` (expect no match) |84| Branch protection review/admin settings | `gh api repos/dtsong/my-claude-setup/branches/main/protection -q '{reviews:.required_pull_request_reviews.required_approving_review_count, admins:.enforce_admins.enabled}'` |85| Vulnerability alerts / Dependabot security updates | `gh api repos/dtsong/my-claude-setup -q .security_and_analysis` |86| Onboarding feedback report count | `gh issue list --search "onboarding" --state all --json number,title` |87| Private-repo symlink list | `find skills commands -maxdepth 1 -type l -exec sh -c 'readlink "$1" \| grep -q private && echo "$1"' _ {} \;` |88| Machine-local hardcoded paths in settings.json | `grep -n '/Users/danielsong' settings.json` |89| registry.json has no cost/quality field | `python3 -c "import json;print(list(json.load(open('skills/council/registry.json')).keys()))"` |90| Pushed refs holding personal content | `git branch -r \| grep -E "worktree-agent\|renovate"` |91| Governance pre-commit hard vs warn tiers | `grep -B1 "(hard)\|(warn)" .pre-commit-config.yaml` |92| Eval Tier 2/3 wiring into CI | `grep -rn "run-evals\|judge-skill-quality" .github/workflows/ .pre-commit-config.yaml` (expect no match) |