Commit graph

44 commits

Author SHA1 Message Date
Claude
08740d4ec2
fix(stream): post-merge required changes for PRs #895/#926/#942/#943/#944/#965 + counter true-up + #964 guard + #954 doc drift
Applies every pre-merge required change from audit/pr-stream-2026-08/ that
could not land on contributor forks, plus the stream's cross-cutting fixes:

- stock-analysis (#944): description trimmed 1463 -> 1001 chars; Anti-Patterns
  + Cross-References sections added; security-auditor false positive at
  holdco-assetmgr.md:58 suppressed inline (auditor:ignore-line) -> strict PASS
- deepread (#965): renamed research/dsh-deepread -> research/deepread; H1 and
  name updated; research-summarizer cross-ref path-qualified; 12 cited sources
  added across both references; plugin.json + marketplace entry; routed in the
  research orchestrator (SKILL.md registry + SIGNALS + classifier.py in
  lockstep, verified: 'deeply read this pdf' -> deepread, 3 signals)
- business-name-fit (#926): 'Use whenever' -> 'Use when' (validator trigger
  regex); +2 cited sources (USPTO TMEP §1209, Usunier & Shaner 2002) -> 5
- embedded-iot-mentor (#942): references/hardware-selection.md (7 sources,
  datasheet-anchored) + worked mini-example; validator length gate now passes
- swedish-mentor (#943): references/swedish-resources.md (6 sources, stable
  official URLs only); session recipes, milestones, learner situations,
  worked example; mandated opener softened to guidance; plugin.json +
  marketplace entry; validator length gate now passes
- Related Projects (#895): LinkedIn Skills row trued up (10 -> 11 skills,
  hardcoded star count dropped)
- check_plugin_json.py: marketplace description <= 1024 guard added to --all
  (the #964 regression guard; commercial-skills sits at 1021/1024)
- #954 doc drift: quality_gates_for_skills.md, cs-skill-author.md,
  security-guidance SKILL.md now point attribution at authoring-notes.json
- Counter true-up after the 6-skill merge batch: 370 skills / 672 tools /
  809 refs / 92 plugins across README.md badge+table, CLAUDE.md, marketplace
  metadata (derive_counters.py --check passes)

All gates green locally: frontmatter 0 errors, model freshness 0 findings,
dual-publish 0 drifted, paths 0, smoke 0 failed, plugin-json 0 FAIL.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Bzm6Pafyxja6g4jUDPcei
2026-08-21 09:01:24 +00:00
Alireza Rezvani
7a65c0827f
Merge pull request #943 from mh-mansouri/feature/swedish-mentor
feat(productivity): add swedish-mentor skill
2026-08-21 10:47:37 +02:00
Alireza Rezvani
4570768781
Merge pull request #936 from benrfairless/fix/frontmatter-yaml-validation
fix(frontmatter): repair 14 unloadable YAML blocks + add gate G10
2026-08-21 10:43:35 +02:00
Claude
7405298b4b
fix: resolve the actionable reported issues (#954, #949, #933, #931, #969, #968, #924, #885)
- #954: strip non-spec source/attribution keys from all 39 plugin.json
  manifests so Claude Code's validator accepts them; metadata preserved in
  new .claude-plugin/authoring-notes.json sidecars; check_plugin_json.py now
  hard-fails manifests carrying those keys and sanity-checks the sidecar;
  CLAUDE.md ClawHub schema section updated to the new rule.
- #949: move the c-level-agents plugin out of c-level-advisor/ to a
  top-level directory so the two marketplace sources no longer overlap;
  updated marketplace.json source, homepage, descriptions, all
  cross-references, docs, harness manifest, mirror-tree symlinks/indexes,
  and rebased the moved files' relative links; domain counters trued up
  (18 -> 19 domains).
- #933: replace dead links to the gitignored maintainer-local megaprompts/
  tree with annotated plain-text references (44 files: SKILL.md, READMEs,
  agents, commands).
- #931: DynamoDB on-demand pricing updated to post-Nov-2024 rates
  ($0.625/M writes, $0.125/M strongly consistent reads).
- #969: skill_security_auditor.py and the three dossier scripts reconfigure
  stdout/stderr to UTF-8 (errors=replace) so legacy Windows codepages no
  longer crash at print time; PYTHONUTF8=1 documented.
- #968: Windows Notes section in INSTALLATION.md + README pointer for the
  core.symlinks mirror-tree checkout caveat.
- #924/#885 residuals: hook commands quote "${CLAUDE_PLUGIN_ROOT}" paths in
  all plugin hooks.json/settings.json (space-safe roots); removed the stale
  pre-rename status/review mirror symlinks and index entries left over from
  the memory-status/memory-review rename.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Qgc6RYXWJPr5oW9DHU7zR4
2026-08-21 05:47:37 +00:00
Mahdi
2d892df70d feat(productivity): add swedish-mentor skill 2026-08-05 21:25:40 +02:00
Ben Fairless
02c04e3d32
fix(frontmatter): repair 14 unloadable YAML blocks
Twelve files had frontmatter that yaml.safe_load rejects, all from the same
cause: an unquoted plain scalar containing ": " inside description. Claude Code
responds by loading the body with empty metadata, so the skill keeps working
via /name but has no description for the model to match against, and the seven
affected agents (where name and description are required) may not load at all.

Eleven are fixed by quoting the existing scalar, leaving the text
byte-identical. design-system carries both ' and " so quoting would defeat the
repo's regex extractors in generate-docs.py and sync-codex-skills.py; its one
colon-space is reworded instead ("Precedence:" -> "Precedence is").

Two agents had no frontmatter at all and were being listed with a placeholder
description; both now declare name and description. tools is deliberately
omitted so they keep inheriting the full set, as before.

Assisted-by: Claude Code:claude-opus-5
2026-08-03 08:55:36 +08:00
Claude
eec8fb61ec
fix(meetings): stop crediting capitalized non-names in 'Name will ...' prose
Review round 8 on PR #921 found the third misattribution path: plain
'Name will ...' lines credited any sentence-initial capitalized word
outside a small pronoun list — 'Friday will be a half day' rendered as
a commitment owned by 'Friday' with no ORPHAN flag. Two deterministic
guards added, applied to both the entry pattern and the checkbox
refine pass:

- NON_OWNER_WORDS: pronouns + weekdays + months + common non-name
  sentence starters (Today/Tomorrow/Next/Last/There/...)
- STATIVE_CONTINUATIONS: 'will be/need/probably/likely/not/...' reads
  as a prediction or status, not a commitment — the line is simply not
  an action item

Verified: all three reviewer examples no longer captured; real
commitments (Maria will send..., Alex will confirm...), checkbox
refines, the round-5 committer case, and the round-7 ORPHAN case all
unchanged; --help/--sample clean.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TQLKzYb1bR2LYqwYUupm5f
2026-07-17 07:05:45 +00:00
Claude
908c48e40e
fix(meetings): only a leading @mention confers action-item ownership
Review round 7 gut-check on the MENTION_ANY fallback, resolved in favor
of scoping: '- [ ] follow up with @sam about pricing' no longer credits
sam — a mid-text mention is the task's object, not its owner (the same
misattribution shape as the round-5 bug, via a different entry path).
Head-anchored mentions ('@sam: book the room', '@sam book the room',
'@sam to book the room') still attribute and strip the owner phrase;
object-only lines now flag ORPHAN for a human to assign, per the
skill's never-silently-guess rule. Docstrings updated; unused
MENTION_ANY_RE removed.

Verified across six patterns incl. the round-5 regression case;
--help/--sample clean.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TQLKzYb1bR2LYqwYUupm5f
2026-07-17 06:59:44 +00:00
Claude
ecb0c9fce0
fix(deep-work): enforce the 10-min buffer before the end-of-day shallow batch
Review round 6 on PR #921 found (and execution confirmed) that batch B
was appended directly, bypassing advance(): on tight schedules
(start_b == cursor) two work blocks landed back-to-back with
'Buffers 0min', violating the docstring's own buffer invariant. The
backward pass now reserves BUFFER_MIN whenever batch B would directly
follow a work block: the overflow check includes it (a day that only
fits without the buffer is now correctly refused, exit 2) and a
explicit Buffer event is emitted when it fits.

Also fixes the cosmetic inconsistency in action_item_extractor's
ACTION:/TODO: path — a leading '@owner will/to' inside the captured
text now strips the owner phrase (matching the Name-will branch), so
'ACTION: @sam to book X' renders as 'book X' under sam.

Verified: tight two-batch day refuses by exactly 10 min; +10-min day
fits with visible buffer; deep->batchB and roomy (buffer+flex) days
correct; --help/--sample clean on both scripts; mid-text-mention and
ORPHAN behavior unchanged.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TQLKzYb1bR2LYqwYUupm5f
2026-07-17 06:54:00 +00:00
Claude
8568483a4c
fix(meetings): action_item_extractor no longer reassigns owner to a mid-text @mention
Review round 5 on PR #921 found a real, silent misattribution:
'@maria will ask @sam to review the doc by Friday' credited sam (the
person being asked) instead of maria (the committer), because
extract() ran the _extract_owner_and_text refine pass unconditionally
and MENTION_ANY_RE matched the second @mention. The refine pass now
runs only when no owner was captured at the head of the line — its
original purpose (checkbox/ACTION-prefix lines that start ownerless).

Verified all four paths: owned-@mention keeps the committer, 'Name
will ... @other' prose keeps the committer, checkbox '@sam to ...'
still refines to sam, ownerless lines still flag ORPHAN; --help and
--sample unchanged.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TQLKzYb1bR2LYqwYUupm5f
2026-07-17 06:47:19 +00:00
Claude
c17b2f59e6
refactor(meetings): agenda_builder usage errors exit 1, matching the batch contract
Closes the last open note from PR #921's review loop: usage errors
(malformed --topic, missing/bad flags) now exit 1 like
meeting_cost_calculator, keeping exit codes 0/2/3 exclusively for
verdicts across the 9-script batch. Epilog updated; all five exit
paths re-verified (usage=1, no-outcome=2, overflow=3, sample/help=0).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TQLKzYb1bR2LYqwYUupm5f
2026-07-17 06:41:49 +00:00
Claude
1d18477b60
fix(productivity): exit-code and --sample --json contract fixes from review
- meeting_cost_calculator.py: usage errors now exit 1 instead of 2, so
  the ASYNC verdict (exit 2) is unambiguous for exit-code-driven
  callers; epilog documents the new code
- focus_session_logger.py: top-level --json now works with --sample
  (canned JSON status), matching the uniform --sample --json contract
  of the other 8 scripts; subcommand --json unchanged
- time_block_planner.py: deep-only overflow no longer says 'defer
  shallow work ... trim the deep blocks' — it now names deep demand as
  the cause when there is no shallow work to defer

Verified: usage-err=1 / ASYNC=2 / MEET-sample=0; --sample --json parses
as JSON; subcommand --json regression-checked against a real state
file; deep-only overflow message exercised; --help sweep clean on all
30 productivity scripts.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TQLKzYb1bR2LYqwYUupm5f
2026-07-17 06:37:57 +00:00
Claude
3f7f806e16
chore(productivity): align new plugin versions with current release (2.11.2)
Per review note on PR #921 — the three new plugins were stamped 2.11.1;
new entries should carry the current release version. plugin.json +
marketplace entries updated; validators and counter check still clean.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TQLKzYb1bR2LYqwYUupm5f
2026-07-17 06:31:50 +00:00
Claude
a775d211c0
refactor(productivity): address reviewer feedback on PR #921
- agenda_builder.py: parse --topic with right-anchored split so desired
  outcomes may contain colons (structured minutes/owner fields split
  from the right, title at the first colon); clearer malformed-spec
  error text
- focus_session_logger.py / action_item_extractor.py: bare tuple return
  annotations -> typing.Tuple for consistency with the files' own style

Verified: --help/--sample exit 0 on all touched scripts; colon-bearing
outcome ('Decide: usage-based vs seat-based') parses and still sorts
decision-first; malformed topic still hard-errors. The reviewer's
time_block_planner lunch/overflow edge case was checked empirically:
batch B is anchored to --end and backward-pass lunch insertion is
guarded by 'lunch + 30 <= start_b', so the day never extends past
--end; the worst case is an explicit 'lunch could not be placed' note.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TQLKzYb1bR2LYqwYUupm5f
2026-07-17 06:27:39 +00:00
Claude
8232162630
fix(productivity): resolve deep-work asset paths + lift meetings agentic signals
- check_paths.py: fix two unresolvable shutdown_checklist.md references
  in cs-deep-work agent/command (correct ../skills/ prefix)
- meetings SKILL.md: add genuine intake/iteration/close-out discipline
  (clarify-the-decision intake, re-run-until-fit stop condition,
  owner+date completion check) -> manifest signals now 5/5, checklist
  still PASS at 97 lines
- productivity harness manifest regenerated

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TQLKzYb1bR2LYqwYUupm5f
2026-07-17 06:17:54 +00:00
Claude
5ade746eea
feat(productivity): add deep-work plugin — time-blocking + shallow-work budget
Fills the time/attention-management gap identified by
audit/productivity-2026-07. Full Path-B contract: cs-deep-work agent,
/cs:deep-work command, SKILL.md (checklist PASS), 3 stdlib scripts
(time_block_planner with 4h deep-cap refusal, shallow_work_auditor with
budget verdict + recent-graduate forcing question, focus_session_logger
with weekly target + streaks), 3 references, 2 assets.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TQLKzYb1bR2LYqwYUupm5f
2026-07-17 06:13:36 +00:00
Claude
8cbd2b6ee9
feat(productivity): add meetings plugin — cost gate + agenda + action discipline
Fills the meeting-hygiene gap identified by audit/productivity-2026-07.
Full Path-B contract: cs-meeting-discipline agent, /cs:meeting-prep +
/cs:meeting-actions commands, SKILL.md (checklist PASS), 3 stdlib scripts
(meeting_cost_calculator with MEET/ASYNC/NOT-READY exit-coded verdicts,
agenda_builder refusing outcome-less topics and timebox overflow,
action_item_extractor with ORPHAN/NO-DUE flags), 3 references, 2 assets.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TQLKzYb1bR2LYqwYUupm5f
2026-07-17 06:11:40 +00:00
Claude
347529d8b7
feat(productivity): add weekly-review plugin — GTD weekly-review loop
Fills the periodic-review gap identified by audit/productivity-2026-07.
Full Path-B contract: cs-weekly-review agent, /cs:weekly-review command,
SKILL.md (checklist PASS), 3 stdlib scripts (open_loop_scanner,
weekly_review_gate with mandatory GET CURRENT refusal gate,
commitment_auditor), 3 references (5-7 sources each), 2 assets.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TQLKzYb1bR2LYqwYUupm5f
2026-07-17 06:10:42 +00:00
Claude
2c86cc1d49
fix(productivity): fable-goal self-check — error on conflicting path + --sample
parser.error (exit 2) instead of silently preferring --sample when both
a prompt file and --sample are passed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YYh4KrhicuBaS5nRtBeLXK
2026-07-16 07:00:29 +00:00
Claude
e3a6940902
docs: fable-goal CLAUDE.md changelog entry + destination-regex tighten
- CLAUDE.md gains an 'Unreleased (post-v2.11.1)' narrative block for
  fable-goal so the changelog-of-record covers the addition without
  inventing a release version (review round 5 ask; counters in arrow
  form to stay clear of derive_counters claim regexes — check passes)
- goal_prompt_self_check.py destination pattern now matches 'the N
  links' phrasing ('the \d*\s*links?'); --sample still 6/6, verified
  'the 3 links' now matches standalone

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YYh4KrhicuBaS5nRtBeLXK
2026-07-16 06:48:46 +00:00
Claude
f9c80986b2
docs: fable-goal README design-notes + fix stale 711 reference count
- plugin README documents the intentional agents/ + assets/ omission and
  the self-check script's scope, per review
- root README line 30 still claimed 711 reference docs (pre-existing
  drift outside derive_counters' claim regexes); trued to 732

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YYh4KrhicuBaS5nRtBeLXK
2026-07-16 06:45:06 +00:00
Claude
e84a53e824
feat(productivity): fable-goal — add goal_prompt_self_check.py per review
Two independent reviews flagged the missing scripts/ folder against the
productivity-domain convention and the repo's 'Algorithm over AI'
principle. Adds one stdlib tool, goal_prompt_self_check.py, which
mechanically verifies the checkable subset of the SKILL.md step-5
self-check on a drafted /goal prompt: word count in the 150-350 band,
goal line, autonomy directive, verification-loop language,
creative-freedom grant, and delivery destination. Exit 0/1/2; --sample
and --output json supported; judgment calls (deliverable concreteness,
resource verification) explicitly stay with the author.

Smoke-verified: --help OK, --sample passes 6/6, degenerate prompt fails
0/6 with exit 1. SKILL.md references the runner in step 5 (79 lines,
checklist still full PASS). agents/ and assets/ remain intentionally
omitted: a single reasoning pass has nothing to orchestrate and no
templates to ship. Counters: python_tools 602 -> 603.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YYh4KrhicuBaS5nRtBeLXK
2026-07-16 06:38:25 +00:00
Claude
7e7074ae76
docs(productivity): fable-goal — fix citation link to specific article URL
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YYh4KrhicuBaS5nRtBeLXK
2026-07-16 06:30:41 +00:00
Claude
10075bff3d
fix(productivity): fable-goal review fixes — version 2.11.1, license clarity, argument-hint
- plugin.json + marketplace version 2.11.2 → 2.11.1 (tracks repo version
  at touch time, matching sibling plugins)
- attribution block clarifies the upstream informal grant is not SPDX and
  that the MIT declaration covers only text authored in this repository
- /cs:fable-goal command gains argument-hint frontmatter (roast/handoff
  convention)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YYh4KrhicuBaS5nRtBeLXK
2026-07-16 06:26:30 +00:00
Claude
fc6177d063
feat(productivity): add fable-goal skill — ramble to autonomous /goal prompt
Improved port of duncan-buildroom/freeskills fable-goal ('free to use and
modify'). Converts a rambling description of a desired outcome into one
polished, copy-paste /goal prompt for a fresh autonomous session.

Improvements over upstream:
- Wrong-tool check (build-now vs write-the-prompt) promoted into the body
- Observable-done principle: every deliverable gets a self-checkable
  completion condition
- Six-slot extraction (deliverable/quantity/stakes/tools/quality/destination)
- Per-medium verification defaults (web, CLI, video, written, data, design)
- Six-point pre-delivery self-check
- Anti-pattern list + failure-mode catalog reference with rationale per
  anatomy part
- Second worked example in a non-web medium (CLI with dry-run verification)
- /cs:fable-goal command; attribution block in plugin.json

SKILL.md passes the write-a-skill 6-item checklist (full PASS, 77 lines).
Counters trued up via scripts/derive_counters.py (includes pre-existing
engineering drift 81→83): skills 355→358, refs 731→732, commands 109→110,
plugins 83→84.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YYh4KrhicuBaS5nRtBeLXK
2026-07-16 06:21:15 +00:00
Claude
a251800e62
feat(productivity): add roast skill — 5-angle adversarial idea panel → one verdict
New productivity/roast/ plugin. Convenes five independent reviewers (The Critic,
The Champion, The Analyst, The Investigator, The Customer) in parallel on a business
idea, then a Judge synthesizes one GO / RESHAPE / KILL verdict with the cheapest
48-hour test to de-risk it.

Renamed the personas/steps from the source draft to be self-explanatory for users:
Critic/Champion/Analyst/Investigator/Customer (was Contrarian/Expansionist/Logician/
Researcher/Buyer) and Frame the idea / Run the 5-angle panel / Call the verdict.

Path-B contract:
- 3 stdlib tools (no LLM calls): brief_builder, verdict_synthesizer (weighted,
  non-compensatory veto gates, tension detection — never a plain average),
  cheapest_test_designer (risk → falsifiable 48-hour test)
- 3 references (5-7 cited sources each), 2 assets, cs-roast-judge agent, /cs:roast command
- source.distinct_from disambiguates vs andreessen (single lens), boardroom
  (enterprise pipeline), grill-me (no verdict)

Counters trued up via scripts/derive_counters.py --check (passes):
346 skills, 582 tools, 708 refs, 94 agents, 100 commands, 79 plugins.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Kmw1eZQoSMDr2diHbCcUkF
2026-07-01 00:51:07 +00:00
Claude
028dc13b35
feat(tooling): JSON-output sample gate (G9) + --sample fixtures (#654)
Implements issue #654 Option A (embedded-sample convention) plus the
verification harness the issue asked for:

- scripts/smoke_json_output.py — new advisory gate (G9) that discovers
  every tool whose --help advertises JSON output, runs <tool> --sample
  <json-flag>, and asserts the stdout parses as JSON. Tools advertising
  JSON without --sample are reported as 'uncovered' (a backlog, not a
  failure) so the gate can be adopted incrementally; --strict flips that
  to a hard failure once coverage is high. Wired into ci-quality-gate.yml
  alongside G8.
- Added --sample embedded fixtures to the 5 tools named in #654:
  error_budget_calculator, slo_review, blast_radius_calculator,
  audit_log_analyzer, api_linter. Their required args are now optional
  when --sample is passed; missing-arg behavior is unchanged otherwise.
- Fixed 4 tools the new gate surfaced (prompt_rater, coach_tip_classifier,
  cheat_code_filter, redaction_linter): their --sample path printed human
  text and ignored --json; it now honors the JSON flag.
- Synced the 3 dual-published standalone copies (slo-architect x2,
  chaos-engineering) so the drift guard stays green.

Gate now reports 16 tools covered, 16 verified, 0 failures.

https://claude.ai/code/session_01CUWsrUNZP9jpxvAwq67UiT
2026-06-11 15:29:39 +00:00
Claude
aecfb8e0bb
feat(skills): wave-3 optimization — domain overhauls per newgen audit
marketing: context-file unified on .claude/product-marketing-context.md;
ai-seo merged into aeo (2 new cited references, folder deleted); index +
marketing-ops routers rebuilt honestly; 24 orphan scripts wired with exact
CLIs; prompt-engineer-toolkit stub references rewritten with cited content;
Meta 20%-rule + GA4 terminology freshness; 5 zips + 3 planning docs removed

c-level-advisor: role registry 9->14 across all 6 routing surfaces; decision
memory unified on ~/.claude/decisions/{raw,approved}; onboarding schema
canonicalized; 12 phantom commands resolved; index repaired (33/37/68 real
counts); ma-playbook sourced + verification loop; 28 trigger descriptions

engineering(+team): agent-designer 279->76 lines and rag-architect 318->71
lines rebuilt around their tools (stale ada-002/pricing gone); release-manager
merged into changelog-generator (version_bumper + hotfix refs moved, crashing
release_planner dropped); 6 skills' orphan scripts wired; ms365 tools gained
real CLIs; 5 brochure skills de-filled; 4 unreferenced zips removed;
bundle counts trued (25->37, 23->32); 18 trigger descriptions

product/research/compliance/bizops: apple-hig-expert rebuilt around
hig_checker's real CLI with web-verified facts; notebooklm re-verified against
live product; 5 index skills converted to honest routers; research-summarizer
repaired with explicit lane statement; 8 over-1024 descriptions compressed;
9 sub-skills gained fenced CLI examples; GDPR one-month (Art. 12(3)) with
calendar-month deadline math; MDR PSUR table per Art. 86(1); 12 ra-qm zips
removed; 24 trigger descriptions

Verified: check_paths 0 findings; check_dual_publish 0 drifted; smoke 581/581;
check_plugin_json 77 OK; compileall rc=0; all descriptions <=1024 chars

https://claude.ai/code/session_019AJddAL1NADWMXsy1qNPQF
2026-06-11 03:58:41 +00:00
Claude
b99505446a
fix: resolve 11 P0 correctness defects from newgen audit
- fda-consultant-specialist: QMSR transition (eff. 2026-02-02) correctly framed;
  legacy QSR sections mapped to ISO 13485:2016 clauses (17-row mapping)
- risk-management-specialist: ALARP-with-cost-benefit replaced by AFAP per
  EU MDR Annex I GSPR 1-4 + EN ISO 14971:2019/A11
- eu-ai-act-specialist: Art. 5(1)(f) sample corrected (workplace, not retail);
  both dual-published copies kept byte-identical
- financial-analyst: 4 scripts now read bundled sample shape (and flat shape),
  exit non-zero on missing data; verified real outputs (ROE 25%, DCF $13.90/sh)
- deal-desk: fixed-COGS margin math unified across script/reference/SKILL.md;
  margin scoring recalibrated (30% discount on 80% GM now scores 25, not 37)
- senior-qa/backend/frontend + email-template-builder: 8 corrupted code
  literals from past bulk YAML-quoting sweep reconstructed
- google-workspace-cli: install coordinates fixed to verified upstream
  (@googleworkspace/cli); phantom subcommands replaced with verified syntax
- project-management: fabricated Atlassian MCP tool names replaced with the 30
  real Remote MCP tools; new canonical references/atlassian-mcp-tools.md;
  unavailable capabilities routed to UI/REST; orphaned scripts wired
- command-guide: retired (documented a different repo's ecosystem)
- markdown-html: stale v2.10.0 'foundation' text replaced; routing now targets
  the shipped converters; never hand-render
- webinar_funnel_scorer.py: argparse added (--help/--sample/stdin)
- handoff redaction linter: missing 17th pattern (private CIDR) added

https://claude.ai/code/session_019AJddAL1NADWMXsy1qNPQF
2026-06-10 14:32:43 +00:00
Claude
3db7dab15f
chore(versioning): unify remaining 20 plugins to 2.9.0
PR #756 normalized most marketplace versions to 2.9.0, but 20 newer
plugins (added after the normalization pass) remained on their own
versions on both marketplace.json and their plugin.json. Bump them all
to 2.9.0 so the registry advertises one unified release version, with
marketplace.json and every plugin.json fully in sync (62/62 at 2.9.0).

https://claude.ai/code/session_01JGwZR83iSg59EAtpTSCBjH
2026-05-27 14:25:08 +00:00
Claude
0f88555485
chore(versioning,docs): normalize stale versions to 2.9.0 + refresh counts
Version normalization (scope: only plugins/skills older than 2.7.0):
- Bumped 52 plugin.json + 21 SKILL.md `version` fields from pre-2.7.0
  values (1.0.0 / 2.0.x / 2.2.x / 2.3.x / 2.4.x / 2.5.x) to 2.9.0.
  Left 2.7.0+ packages untouched. Tool mirrors (.codex/.gemini/.vibe/
  .hermes) excluded. All manifests still pass check_plugin_json --all.

Doc count refresh (recomputed raw figures: 338 skills, 16 domains,
62 plugins, 533 Python tools, 676 references):
- marketplace.json: both descriptions + metadata.version -> 2.9.0.
- Root README: headline, badges (Skills 338, Agents 51+, Commands 87+),
  intro counts, convert section (338 skills / 9 tools), and the full
  domain table rebuilt to 16 domains summing to 338 (adds research-ops,
  business-operations, commercial, compliance-os; corrects product 17,
  marketing 46, c-level 66, ra-qm 18, finance 4, engineering 51/78).
- Fixed stale per-skill README `Version:` lines left inconsistent by the
  bump (andreessen, c-level-agents, product-team, senior-qa).
- Fixed stale domain README footers (product-team 17/17, c-level 66/66,
  project-management 9/9).
- CLAUDE.md scope line, structure tree, highlight, and footer synced to
  the raw figures.

https://claude.ai/code/session_01PUNmQVE4WYvcrzpq2anC3D
2026-05-27 05:22:59 +00:00
Claude
d692bf8dfd
Merge remote-tracking branch 'origin/dev' into claude/andreessen-productivity-plugin-PlOzn
# Conflicts:
#	.claude-plugin/marketplace.json
#	.gemini/skills-index.json
#	docs/getting-started.md
#	docs/index.md
#	mkdocs.yml
2026-05-24 01:56:01 +00:00
Claude
198c0af789
feat(andreessen): add asset templates + worked examples (quality 56.2 -> 65.7)
Genuine, repo-consistent additions that lift the real quality gaps (not doc
padding):

- assets/forcing_question_worksheet.md — fillable 6-question interrogation
- assets/blank_3x5_card.md — blank daily card template
- assets/example_market_verdict.md — full worked market-first verdict
- assets/example_pmf_check.md — worked before/after PMF check

Both worked examples' tool invocations are verified against the actual scripts
(MARKET-FIRST-DERISK at composite 6.36; BEFORE-PMF at composite 4.35). SKILL.md
Assets section updated to reference all five.

Quality scorer: 56.2 -> 65.7 (clears the 60 gate). examples 60->100%,
assets 12->60%, practical_examples 40->80%. Audit now a clean PASS on quality
alongside structure 91.3/EXCELLENT, scripts 3/3, security 0/0.

https://claude.ai/code/session_01SF6MzfjHurZMt5JUFET9h3
2026-05-24 01:44:12 +00:00
Claude
d26c471c4a
chore(andreessen): plugin-audit follow-ups — gemini sync + inner README
Post-merge audit fixes for the andreessen productivity skill:

- Add skills/andreessen/README.md (inner skill README). Lifts structure
  91.3/EXCELLENT and quality 56.2; the README was the one genuine doc gap
  vs sibling skills.
- Run the gemini cross-platform sync (codex ran at merge time; gemini was
  missed). Adds the andreessen symlink + index entry and reconciles a
  pre-existing stale claude-coach entry the generator surfaced.

Audit verdict: PASS WITH WARNINGS. Structure 91.3 EXCELLENT, scripts 3/3
PASS, security PASS (0 critical/0 high), marketplace + ecosystem clean. The
single warning is the quality scorer's title-case section/frontmatter schema
that no Path-B productivity skill uses (andreessen 56.2 vs merged siblings
reflect 44.6 / capture 46.4).

https://claude.ai/code/session_01SF6MzfjHurZMt5JUFET9h3
2026-05-24 01:36:01 +00:00
Claude
f4c10330af
feat(productivity): add andreessen market-first decision & productivity skill
New productivity/andreessen plugin — a Marc Andreessen-mode operator that
pressure-tests ventures/ideas/features/bets through his documented frameworks
(market > team > product; product/market fit is the only milestone; bias to
build) and runs his 3x5-card + Anti-Todo daily routine. Built as the
Andreessen-lens counterpart to a founder-operating-system plugin.

Runs on the user-supplied anti-sycophancy operating prompt, preserved verbatim
in references/operating_prompt.md (counterargument first, no premise validation,
no disclaimers, explicit confidence levels, no capitulation without new
evidence). The second emphasis block is operationalized as a posture-mapping
table so each instruction changes behavior rather than sitting as decoration.

Ships 3 stdlib-only deterministic tools (market_first_evaluator with a hard
sub-4 market kill gate, pmf_signal_scorer with the Sean Ellis 40% gate,
anti_todo_card enforcing the 3-5 cap), 4 references each citing 5-7 sources with
explicit confidence levels on every Andreessen attribution, cs-andreessen agent,
/cs:andreessen + /cs:pmf-check commands, and a worked 3x5-card asset.

Registered in marketplace.json + .codex skills index (productivity 5 -> 6).
.codex review/run/status symlinks reflect the sync generator's standard
collision resolution on the current tree.

https://claude.ai/code/session_01SF6MzfjHurZMt5JUFET9h3
2026-05-24 01:27:22 +00:00
Claude
bdc043776c
fix(version): productivity/handoff is v2.8.2, not v2.8.1 (collision fix)
v2.8.1 was already taken by the engineering role-skill upgrade
(senior-fullstack / senior-frontend / senior-backend with karpathy-coder
+ Matt Pocock decision engines), released 2026-05-20 — before the
handoff PRs even merged. The auto-release workflow created the v2.8.1
tag from that work via CHANGELOG.md parsing.

The productivity/handoff skill is the next minor on top of v2.8.1:
v2.8.2.

Changes:

- CHANGELOG.md: prepend a new [2.8.2] entry documenting the handoff
  skill (PRs #724, #728, #729). The auto-release workflow
  (.github/workflows/release.yml) will pick up this entry and create
  the v2.8.2 git tag + GitHub Release on the next push to main.
- productivity/handoff/.claude-plugin/plugin.json: 2.8.1 -> 2.8.2
- .claude-plugin/marketplace.json (handoff entry): 2.8.1 -> 2.8.2
- CLAUDE.md: 4 spots bumped to v2.8.2; v2.8.1 references kept where
  they correctly point to the engineering role-skill release
- README.md: Productivity table row ✨v2.8.1 -> ✨v2.8.2
- docs/index.md: description, hero subtitle, "329 Skills" card text
- docs/getting-started.md: description meta + FAQ count text
- mkdocs.yml: site_description

The narrative across all top-level docs now reads correctly:
v2.8.0 (bizops + commercial) -> v2.8.1 (engineering role-skills) ->
v2.8.2 (productivity/handoff).

Verified:
- 0 v2.7.5 references remain (earlier typo)
- All v2.8.1 references that remain point to engineering role-skills
- CHANGELOG topmost entry: [2.8.2] - 2026-05-23
- plugin.json + marketplace.json both at 2.8.2
- mkdocs build clean (will re-verify in CI)

https://claude.ai/code/session_01KLhHBAfEDXdQMeRe6G8sRa
2026-05-23 01:43:50 +00:00
Claude
73645c800d
docs: bump productivity/handoff to v2.8.1 across all version references
Correct the version number from v2.7.5 to v2.8.1. The handoff skill is a
single-skill point release on top of v2.8.0 (business-operations +
commercial), not a v2.7.x backport.

Version touched in 7 files:
- productivity/handoff/.claude-plugin/plugin.json: 2.7.5 -> 2.8.1
- .claude-plugin/marketplace.json (handoff entry): 2.7.5 -> 2.8.1
- CLAUDE.md: Current Scope text, Current Version section header,
  v2.7.5 highlights -> v2.8.1 highlights, master plan reference,
  footer Version
- README.md: badges (Skills 313->329, Agents 46+->49+, Commands
  60+->79+), Productivity row in Skills Overview table (4 -> 5
  skills, ✨v2.7.0 -> ✨v2.8.1, add handoff)
- docs/index.md: title (313 -> 329), description (add v2.8.1 +
  v2.8.0 context), hero subtitle, "329 Skills" card text +
  "49+ Agents" card label
- docs/getting-started.md: description (313 -> 329, v2.7.3 -> v2.8.1
  context), FAQ "All 313 skills" -> "All 329 skills"
- mkdocs.yml: site_description (counts + v2.8.1/v2.8.0 context)

Verified:
- 0 remaining v2.7.5 references in tracked .md/.json/.yml files
- plugin.json + marketplace versions match (2.8.1)
- check_plugin_json.py OK on productivity/handoff
- mkdocs build clean (21.21s, pre-existing grill-with-docs warnings only)
- Codex + Gemini sync clean

https://claude.ai/code/session_01KLhHBAfEDXdQMeRe6G8sRa
2026-05-23 01:36:26 +00:00
Claude
1d066e0dec
feat(productivity/handoff): v1.1 — SessionEnd hook, self-check script, --refresh flag
Ships the three improvements judged most impactful in v1.1 design review:

1. SessionEnd hook (hooks/session_end.py)
   Pairs with SessionStart. When a session ends with no handoff in the
   last 30 minutes, prints a one-line reminder. Cannot prompt
   interactively or block session end — surfaces text via stdout.
   Disable per-session with HANDOFF_SESSIONEND=0. hooks.json updated to
   wire both SessionStart and SessionEnd.

2. handoff_self_check.py — fidelity script (~300 LOC, stdlib-only)
   Operationalizes handoff_prompt.md. Six checks:
   - All 5 sections present
   - Goal is non-empty and non-placeholder
   - State-of-play bullets reference at least one artifact (commit hash,
     PR/issue number, file path, URL)
   - Open decisions are present (or explicit "- None.") when git is dirty
     or has recent commits
   - Skills to use: 3-5 entries, hard cap enforced
   - Artifacts contain paths/URLs only, no inline content
   Severity: high/medium/low. Strict mode exits 1 only on HIGH findings.
   --sample fixture has 3 planted issues (2 high + 1 medium) and exits 1.
   Canonical example_handoff.md passes clean (exit 0).
   /cs:handoff command updated to run self-check between scaffold-fill
   and redaction linter.

3. --refresh flag on handoff_template_generator.py
   Reuses the most recent handoff in the configured save location
   instead of creating a new file. Falls through to create-if-missing
   when no existing handoff is found. Keeps the save location
   uncluttered when work continues past the original handoff time;
   ensures the SessionStart hook always loads the up-to-date version.

Version bump: 2.7.4 -> 2.7.5. Marketplace description and keywords
updated. README v1.1 section added. SKILL.md gains "Refreshing an
Existing Handoff" and "SessionEnd Reminder" subsections.

Verified:
- All 9 Python files compile clean
- self-check --sample correctly fails (3 findings, exit 1)
- self-check passes clean against assets/example_handoff.md (exit 0)
- --refresh finds the latest /tmp/handoff-*.md and prints its path
- SessionEnd hook prints the reminder when no recent handoff exists
- check_plugin_json.py + marketplace.json + hooks.json all parse
- Plugin audit re-run: structure 84.2 -> 86.0, quality 62.2 -> 63.0,
  security PASS (0 critical, 0 high)
- Codex + Gemini sync re-ran clean

https://claude.ai/code/session_01KLhHBAfEDXdQMeRe6G8sRa
2026-05-23 01:22:07 +00:00
Claude
5f85d59ba4
chore(productivity/handoff): apply plugin-audit fixes (structure 73->84, quality 54->62)
Auto-fixes from the 8-phase plugin audit:

- Drop `from __future__ import annotations` from all 7 Python files. The
  validator flagged it as an "external import" (false positive — it's
  stdlib). Type hints already use 3.10+ syntax (`Path | None`,
  `dict[str, Any]`), so the import was redundant.

- Add `assets/example_handoff.md` — complete worked example of the
  5-section output. Lifts quality scorer's "practical_examples" and
  "assets_existence" dimensions.

- Add skill-level `README.md` (in addition to existing plugin-level one)
  pointing at SKILL.md, scripts, references, and assets. Closes the
  scorer's "readme_existence" warning.

- Extend SKILL.md from 90 -> 178 lines: add `## Examples` (4 scenarios)
  and `## Usage` (command-to-step table). Clears the validator's
  "SKILL.md too short" error and lifts the scorer's documentation depth.

- Sync Codex + Gemini indexes (auto-regenerated by the sync scripts).

Audit results after fixes:
  Phase 2 (structure): 73.0 -> 84.2 (GOOD, threshold 75)
  Phase 3 (quality):   53.9 -> 62.2 (C, sibling capture scores 46.4)
  Phase 5 (security):  0 critical, 0 high (PASS)
  All 6 scripts pass --help and --sample. End-to-end smoke test re-run
  clean: template generator writes, hook surfaces, linter blocks
  planted secrets in strict mode.

Verdict: PASS WITH WARNINGS (warnings are validator quirks — sibling
`config_loader` import flagged as external, same way `capture` and
`reflect` get flagged).

https://claude.ai/code/session_01KLhHBAfEDXdQMeRe6G8sRa
2026-05-21 17:51:21 +00:00
Claude
87fb428ead
feat(productivity): add handoff skill (Matt Pocock-inspired) with first-run setup, redaction enforcement, SessionStart auto-load
Ships the 5 must-haves for a handoff skill to fulfill its purpose:

1. SessionStart hook auto-loads the latest handoff (hooks/session_start.py).
   Wrapped in <handoff_from_previous_session> tags so the next agent reads
   it as data, not instructions. Disable per-session via HANDOFF_SESSIONSTART=0.

2. First-run setup with explicit save-location choice (no pre-selected
   default). 5 core questions: save location, retention, redaction
   strictness, git context, recommender scope. Prompt-once-then-default
   model — declined setup leaves a sentinel so the prompt never re-appears.

3. Mandatory checklist for the agent (references/handoff_prompt.md) — 7
   steps forcing topic-by-topic classification (State / Decision / drop)
   instead of free-handing prose.

4. Redaction linter (scripts/redaction_linter.py) — 17 stdlib regex
   patterns covering AWS/GitHub/OpenAI/Anthropic/Slack/Stripe keys, JWT,
   private-key blocks, env-style secret assignments, DB connection strings
   with creds, bearer tokens, URL token params, email, phone. Inline
   whitelist marker for true false positives. Strict/warn/off modes.

5. mtime-guarded cleanup (scripts/cleanup.py) — never deletes a handoff
   the user edited as a working surface.

Wrapper layout matches productivity/capture and productivity/reflect:
SKILL.md preserves Matt's seven sentences verbatim, surrounded by
invocation triggers, output path discipline, 5-section template, and an
anti-patterns block. Plus cs-handoff-author agent, /cs:handoff and
/cs:handoff-setup commands, 5 reference docs (each citing 5-6 sources),
6 stdlib-only scripts (all pass --help and --sample).

Coexists with engineering/handoff/ (code/PR-focused, no setup, no
redaction enforcement, no SessionStart hook). Both shipped in
marketplace.json. Codex slug collision: the productivity variant wins
the .codex/skills/handoff symlink because it's the more general-purpose
version; both remain in .codex/skills-index.json.

Credit to Matt Pocock surfaces in README + SKILL.md footer + scaffold
footer, not as a manifest attribution block (cleaner plugin.json).

Verified:
- All 6 Python tools pass --help and --sample
- redaction_linter --sample finds 8 planted secrets, exits 1 (strict)
- SessionStart hook smoke-tested end-to-end against a real scaffold
- check_plugin_json.py --all clean (0 failures across all plugins)
- sync-codex-skills.py re-ran clean (productivity: 4 -> 5)

https://claude.ai/code/session_01KLhHBAfEDXdQMeRe6G8sRa
2026-05-21 17:33:42 +00:00
Claude
6e45e578b5
release(v2.7.0): version bumps + CHANGELOG + plugin.json schema doc
Final polish for v2.7.0 release.

Changes:
- All 12 v2 plugin.json files bumped 1.0.0 → 2.7.0 (release alignment)
- CHANGELOG.md: new v2.7.0 section documenting the 13 skills,
  3 new domain folders, marketplace + codex sync, Path-B convention,
  and 8-phase audit verification results
- CLAUDE.md: 'Current Version' bumped 2.6.1 → 2.7.0 with v2.7.0 highlights
  block (13 skills, Path-B pattern, verification summary)
- CLAUDE.md: ClawHub plugin.json schema clarified — `source` and `attribution`
  formally accepted as approved extension fields (consistent with existing
  pattern across 13 new v2 skills + 3 engineering Matt-Pocock-derivative
  plugins). Stripped at ClawHub-publish time if/when stripping pipeline lands.
- CLAUDE.md: ClawHub rule #6 version reference bumped 2.2.0+ → 2.7.0+

Audit verification before release:
- 39/39 scripts pass --help across all 13 v2 skills
- Spot-check audit (pulse/litreview/notebooklm): all 86.4/GOOD structure,
  3/3 scripts, 0 critical/high security findings
- Bulk audit (9 remaining skills): all 79.5-86.4 structure, 0 critical/high
  security findings (1 false positive in syllabus: hardcoded user-facing
  error message string contains 'npm install docx' — not runtime install)
- Cross-skill consistency: 7/7 research-pack siblings carry the Agent
  Integrity Rules block; orchestrator disambiguation present in 5 places

https://claude.ai/code/session_01FEUmeuYhmnxVFq7EZM8ZSw
2026-05-16 10:11:33 +00:00
Claude
7bdc98e517
feat(productivity): reflect skill — Path-B light-prompt-flow sibling of capture
Slice 8: productivity light-prompt-flow sibling. Same shape as capture
(11 files, max-1-question intake, fast-to-action), different mode —
capture organizes external dumps; reflect re-examines internal
conversation state.

After this merges: 10 of 13 v2 megaprompts shipped.

SOURCE SPEC

megaprompts/02-reflect-megaprompt.md (PR #657).

WHAT THE SKILL DOES

Mid-conversation reflection. Pauses execution, re-reads the FULL
conversation from original goal forward (not just recent turns),
runs the 5-dimension analysis framework:
  - Macro Perspective (original goal vs current; drift detection)
  - Gap Analysis (assumptions / stakeholders / constraints /
    alternatives / external factors)
  - Reflective Inquiry (right problem? simpler path? harder valuable
    path avoided?)
  - Bias Check (confirmation / sunk cost / anchoring / complexity /
    recency — each with recognition cues)
  - Contextual Alignment (does direction serve actual goals + best
    use of time + external factors)

Delivers flowing prose (NO headers, NO bullets). Ends with mandatory
directional recommendation: Continue / Pivot to {X} / Pause for {Q}.

KEY PATH-B PRESERVED ELEMENTS

- Re-read FULL conversation from original goal (not just recent turns)
  — the discipline that distinguishes real reflection from local
  summary
- Halt-current-thread stop directive (reflection is a pause, not a
  side-quest)
- Honest-output discipline: NO manufactured problems when path is
  solid; NO vague reassurance ("looks good!") instead of specific
  reasoning
- 5-dimension framework preserved verbatim
- 5 biases preserved (confirmation, sunk cost, anchoring, complexity,
  recency) with recognition cues
- Flowing prose enforced (no headers, no bullets in body)
- Closing recommendation mandatory (Continue / Pivot to X / Pause
  for Q)
- Low-intake: max 1 optional clarifier (only when context is thin);
  default to no questions
- No name references (generic second-person throughout)
- Implicit triggers OFFER reflection, never auto-invoke (10+ detail
  turns / frustration / dead-ends → ask user if they want to step
  back, don't unilaterally run)

PURE-REASONING SKILL

No external APIs. No DOCX generation. No file-system writes beyond
audit. Most portable v2 skill — works in Claude Code CLI + Claude.ai
web natively, no MCP dependencies, no Node.js, no Consensus account
required.

REPO STRUCTURE (mirrors capture 1:1)

productivity/reflect/
├── .claude-plugin/plugin.json
├── README.md
├── agents/cs-reflect.md         ← reflection persona, honest-output enforcer
├── commands/cs-reflect.md       ← /cs:reflect (or auto-triggers on phrases)
└── skills/reflect/
    ├── SKILL.md
    ├── references/
    │   ├── cognitive_bias_canon.md         ← 5 biases + recognition cues
    │                                          (7 sources: Tversky/Kahneman,
    │                                          Wason, Arkes/Blumer,
    │                                          Russo/Schoemaker, Tetlock,
    │                                          Karpathy)
    │   ├── honest_output_discipline.md     ← anti-manufactured-problems
    │                                          (7 sources: Yegge, Gawande,
    │                                          Deming, Russell, Kim Scott,
    │                                          Bret Victor, skill spec)
    │   └── conversation_reflection_practice.md ← Schön reflective practice
    │                                          (7 sources: Schön 1983 + 1987,
    │                                          Argyris/Schön, Kolb, Polanyi,
    │                                          Kahneman/Tversky, Victor)
    └── scripts/
        ├── bias_pattern_detector.py        ← stdlib: regex scan for 5-bias
        │                                     signal patterns
        ├── conversation_depth_analyzer.py  ← stdlib: turn count + implicit
        │                                     trigger signal detection
        └── directional_recommendation_validator.py  ← stdlib: verify output
                                              ends with Continue/Pivot/Pause +
                                              specific evidence + flowing prose

11 files, 1,554 lines. Comparable to capture (1,560 lines).

VERIFIED CLEAN

All 3 scripts pass smoke tests:

- bias_pattern_detector --sample (notification system + sunk cost +
  anchoring + complexity scenario): correctly detects 3 biases
  (sunk_cost via "we've invested", anchoring via "sticking with",
  complexity via 9 "what about X" hits). Correctly clears confirmation
  + recency (no strong signals).
- conversation_depth_analyzer --sample (19-turn debugging conversation
  with stuck-ness markers): correctly verdicts OFFER_REFLECT based on
  frustration (8 hits) + dead-ends (4 hits). Note: "skill should OFFER
  reflection, not auto-invoke" — honors design intent.
- directional_recommendation_validator --sample-pass (honest validation
  output with 16 specific-evidence references): PASS 6/6.
- directional_recommendation_validator --sample-fail (vague
  reassurance with bullets, no recommendation, no evidence): FAIL with
  4 specific issues caught (missing closing recommendation, 2 vague
  phrases, 3 bullets, 0 specific-evidence refs).

All 3 with --output json: valid JSON.
plugin.json validates.

VERTICAL-SLICE STATUS

  ✓ Slice 1: capture (PR #659)
  ✓ Slice 2: pulse (PR #660)
  ✓ Slice 3: email pair (PR #661)
  ✓ Slice 4: landing (PR #662)
  ✓ Slice 5 batch 1: litreview (PR #663)
  ✓ Slice 5 batch 2: grants + dossier (PR #664)
  ✓ Slice 5 batch 3: patent + syllabus (PR #666)
  ✓ Cleanup PR: move pulse + capture (PR #667)
  ✓ Slice 8: reflect (this PR)
  ☐ Slice 6: notebooklm (browser-automation, last shape)
  ☐ Slice 7: 13-research orchestrator + autoresearch-agent reconciliation

10 of 13 v2 megaprompts shipped after this merge. 3 remaining:
notebooklm (browser-automation), 13-research (orchestrator), then v2
is complete.

NOT DONE IN THIS PR (intentional)

- .claude-plugin/marketplace.json not updated (separate concern;
  done after all 13 ship)
- .codex/skills/reflect symlink not added (auto-sync workflow handles
  on merge per existing pattern)

https://claude.ai/code/session_01FEUmeuYhmnxVFq7EZM8ZSw
2026-05-16 05:37:30 +00:00
Claude
6d9630f83c
chore(cleanup): move pulse + capture to proper domain folders
Surgical move PR — resolves the two domain warts accumulated during
the v2 megaprompt build sweep:

  engineering/pulse/   → research/pulse/     (research-pack — pulse is
                                              the first research skill;
                                              now joins litreview, grants,
                                              dossier, patent, syllabus)
  engineering/capture/ → productivity/capture/ (productivity — capture
                                                 is brain-dump organizer,
                                                 not engineering tooling)

WHY THIS PR

When Slice 1 (capture) shipped in PR #659, the productivity/ domain
folder didn't yet exist. When Slice 2 (pulse) shipped in PR #660, the
research/ folder didn't yet exist either. Both were placed in
engineering/ as the catch-all.

After Slices 3-5 established the productivity/, marketing/, and
research/ top-level domain folders, those two early skills were left
in engineering/ as warts. This PR resolves them BEFORE Slice 7
(13-research orchestrator) so the orchestrator can reference
research/pulse/ as its routing target without further path churn.

WHAT MOVED

Two directories moved via `git mv` (preserves rename history):
  - engineering/pulse → research/pulse (11 files)
  - engineering/capture → productivity/capture (11 files)

INTERNAL REFERENCES UPDATED

Inside the moved directories:
  - .claude-plugin/plugin.json homepage URLs (engineering/X → new path)
  - agents/cs-*.md `skills:` frontmatter field

CROSS-SKILL REFERENCES UPDATED

6 external files reference pulse and/or capture as sibling skills.
All updated via sed:

  productivity/email/agents/cs-inbox-setup.md   (capture ref)
  productivity/email/agents/cs-inbox-triage.md  (pulse + capture refs)
  research/grants/agents/cs-grants.md           (pulse ref)
  research/litreview/agents/cs-litreview.md     (pulse ref + stale
                                                 "will move in cleanup
                                                 PR" caveat removed)
  research/dossier/agents/cs-dossier.md         (pulse ref)
  marketing/landing/agents/cs-landing.md        (pulse + capture refs)

CODEX SYMLINKS RE-POINTED

.codex/skills/{capture,pulse} symlinks updated to point at new
locations. Verified resolution to SKILL.md files works.

.codex/skills-index.json still references the old paths — this file
is auto-regenerated by the codex-sync workflow on every merge to dev
(prior commits: 9a47d85, bf5d4c2, f0176e0). Will regenerate fully
when this PR merges.

VERIFIED CLEAN

- `grep -rn 'engineering/pulse\|engineering/capture'` returns zero
  results outside .codex/skills-index.json (which auto-regenerates).
- Moved scripts smoke-tested from new locations:
    productivity/capture/skills/capture/scripts/workspace_inventory.py
      --sample → returns inventory correctly
    research/pulse/skills/pulse/scripts/citation_tracker.py
      --action list → returns empty (no sessions) as expected
- Symlinks resolve: `.codex/skills/capture/SKILL.md` and
  `.codex/skills/pulse/SKILL.md` both readable.

POST-CLEANUP STATE

Domain folders contain only domain-appropriate skills:

  engineering/       — software-engineering tools (Matt Pocock skills,
                       agenthub, caveman, grill-me, grill-with-docs,
                       handoff, write-a-skill, 20+ other engineering
                       skills)
  productivity/      — capture (new), email pair (inbox-setup +
                       inbox-triage)
  marketing/         — landing
  research/          — pulse (new), litreview, grants, dossier,
                       patent, syllabus

This matches the CLAUDE.md navigation map's domain definitions and
removes the two cumulative warts.

REMAINING WORK (after this merges)

  ☐ Slice 6: notebooklm (browser-automation, last shape)
  ☐ Slice 7: 13-research orchestrator + autoresearch-agent reconciliation
  ☐ Slice 8: 02-reflect (productivity sibling of capture)

9 of 13 v2 megaprompts shipped. 3 remaining + this cleanup.

https://claude.ai/code/session_01FEUmeuYhmnxVFq7EZM8ZSw
2026-05-16 05:08:10 +00:00
Claude
a2e9e48eb2
feat(productivity): email pair (inbox-setup + inbox-triage) — Path-B workflow-pair slice
Slice 3 of 13: workflow-pair shape. Validates the Path-B conversion pattern
for two coupled skills sharing a strict 7-file KB contract. Also introduces
the productivity/ domain folder per the navigation-map distinction in
CLAUDE.md (engineering/ = software-engineering scope; productivity/ =
generic productivity workflows).

DOMAIN FOLDER DECISION

CLAUDE.md defines engineering/ as "Engineering (POWERFUL) — Agent design,
RAG, MCP, CI/CD, database, observability." Email triage is generic
productivity, not software engineering. New folder: productivity/.

Capture (Slice 1, merged in PR #659) was placed under engineering/ before
this distinction was sharpened. It will move to productivity/ in a separate
cleanup PR — moving a merged plugin in this slice would risk breaking
anyone who installed it from engineering/capture/.

Future productivity slices (02-reflect) will go under productivity/ from
the start.

SOURCE SPECS

- megaprompts/06-inbox-setup-megaprompt.md (PR #657)
- megaprompts/07-inbox-triage-megaprompt.md (PR #657)

The megaprompts are canonical; these plugins are working implementations.
PR #657's cross-skill consistency audit verified the 7 KB filenames
align verbatim between the two megaprompts. This slice preserves that
alignment.

WHAT THE PAIR DOES

Two coupled skills sharing a 7-file KB at ${WORKSPACE}/Email/:

  inbox-setup (run once):
    Interactive 8-section interview (~25-31 grill-me questions) →
    writes 7 KB files (taxonomy, patterns, evaluation-framework,
    rate-card, blocklist, tracker, triage-log/).

  inbox-triage (run recurringly):
    Light-intake (max 2 optional override questions). Reads 7 KB files,
    classifies recent emails, researches new senders, generates
    recommendations (TAKE IT / WORTH / PASS / FLAG), drafts replies
    (NEVER SENDS), delivers report, updates blocklist + tracker, writes
    per-run log. 10 execution steps.

PATH-B CONVERSION DISCIPLINE

- Both megaprompts' frontmatter descriptions preserved verbatim.
- Both workflow structures preserved 1:1 in respective SKILL.md files.
- All 8 setup sections preserved verbatim with per-question structure
  (S{n}.Q{m}) + "why I'm asking" rationale.
- All 10 triage steps preserved verbatim.
- DRAFTS-ONLY rule preserved + amplified (stated in SKILL.md, agent,
  command, AND enforced by draft_safety_validator.py).
- Skip-logic preserved (S4 conditional on S1 surfacing opportunities).
- 7-file KB contract referenced verbatim in both directions.

REPO STRUCTURE — MULTI-SKILL LAYOUT (CLAUDE.md plugin-schema rule)

productivity/email/
├── .claude-plugin/plugin.json    ← skills: ["./skills/inbox-setup", "./skills/inbox-triage"]
├── README.md                      ← pair overview + 7-file contract diagram
├── agents/
│   ├── cs-inbox-setup.md          ← interview persona
│   └── cs-inbox-triage.md         ← recurring-run persona, DRAFTS-ONLY enforcer
├── commands/
│   ├── cs-inbox-setup.md
│   └── cs-inbox-triage.md
└── skills/
    ├── inbox-setup/
    │   ├── SKILL.md               ← 8 sections, 25-31 Q discipline
    │   ├── references/
    │   │   ├── kb_file_contract.md            ← write-side spec
    │   │   ├── grill_me_section_walk.md       ← discipline + skip-logic
    │   │   └── voice_calibration.md           ← sample-extraction theory + 7 sources
    │   └── scripts/
    │       ├── kb_validator.py                 ← stdlib: 7-file contract check
    │       ├── section_progress_tracker.py    ← stdlib: 8-section walk state
    │       └── voice_sample_analyzer.py        ← stdlib: pattern extraction
    └── inbox-triage/
        ├── SKILL.md               ← 10 steps + DRAFTS-ONLY rule
        ├── references/
        │   ├── kb_file_contract.md            ← read-side spec (mirror)
        │   ├── triage_decision_framework.md  ← TAKE/WORTH/PASS/FLAG + 7 sources
        │   └── drafts_only_safety.md         ← NEVER-SEND canon + 7 sources
        └── scripts/
            ├── kb_reader.py                    ← stdlib: parsed KB load + fail-fast
            ├── search_window_calculator.py    ← stdlib: cadence → window
            └── draft_safety_validator.py      ← stdlib: post-run NEVER-SEND check

20 files, 3,710 lines. Roughly 2x a single-skill slice (capture: 1,560,
pulse: 1,643), appropriate for two coupled skills.

VERIFIED CLEAN

Smoke tests on all 6 scripts:

- kb_validator.py: 15/15 PASS on sample (4 core files + h1s + sections +
  conditional file expectations + triage-log/ dir)
- section_progress_tracker.py: full lifecycle (start → record_q → record_
  section_done → record_skip → status). Active section advances correctly
  past S4 skip.
- voice_sample_analyzer.py: 5 samples → register/length/hedging/I-vs-We
  verdicts + opening + sign-off pattern extraction + email-patterns.md
  output block generation.
- kb_reader.py: reads 5/6 sample files (rate-card.md correctly absent),
  PASS verdict, structured parsing.
- search_window_calculator.py: 2x-daily + 14:00 → 9h lookback,
  window_start 05:00, run_label "Afternoon". Provides Gmail/Outlook/IMAP
  query templates.
- draft_safety_validator.py: PASS on clean log; FAIL on log with
  `gmail.users.messages.send` (caught by 2 patterns — defense in depth).
  Action-required guidance fires.

CROSS-SKILL CONTRACT ALIGNMENT (PR #657 audit verbatim alignment preserved)

Each of the 7 KB filenames referenced multiple times on both sides:
  email-taxonomy.md:      setup=5 triage=9
  email-patterns.md:      setup=4 triage=8
  evaluation-framework:   setup=5 triage=7
  rate-card.md:           setup=5 triage=4
  blocklist.md:           setup=4 triage=6
  tracker.md:             setup=4 triage=7
  triage-log:             setup=6 triage=7

VERTICAL-SLICE STATUS

  ✓ Slice 1: capture (light prompt-flow, PR #659 merged)
  ✓ Slice 2: pulse (research-pack, PR #660 merged)
  ✓ Slice 3: email-pair (workflow-pair — this PR; introduces productivity/)
  ☐ Slice 4: generator (04-landing) — validates Next.js code template emission
  ☐ Slice 5: orchestrator/router (13-research) — must reconcile with existing
    engineering/autoresearch-agent/

After Slice 4 validates the generator shape, only the orchestrator shape
remains to be validated. The 6 remaining research-pack skills (litreview,
grants, syllabus, patent, dossier, notebooklm) and 02-reflect can then be
batched in a single PR each.

NOT DONE IN THIS PR (intentional)

- .claude-plugin/marketplace.json not updated (separate concern; done after
  all 13 ship)
- .codex/skills/inbox-setup + .codex/skills/inbox-triage symlinks not added
  (auto-sync workflow handles on merge)
- engineering/capture/ NOT moved to productivity/capture/ (would break
  anyone who installed from current path; address in separate cleanup PR)

https://claude.ai/code/session_01FEUmeuYhmnxVFq7EZM8ZSw
2026-05-15 15:28:00 +00:00