Commit Graph
809 Commits
Author SHA1 Message Date
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> eba124cb5e fix(trakt): expose --page and normalize X-Pagination headers in JSON
Every discovery command (movie/tv x trending/popular/anticipated) now
accepts --page alongside --limit and forwards both as query parameters.
TraktClient._get returns (data, pagination) where pagination is the
X-Pagination-* header set normalized onto the stable keys page, limit,
page_count, and item_count; missing or non-numeric headers degrade to an
empty object. JSON output keeps the movies/shows array beside a new
pagination object, human output appends "Page N of M" only when the
headers are present, and cmd_movie/cmd_tv collapse into one shared
cmd_discovery handler.

Adds mocked coverage for page=2 request params across all six commands,
header normalization (full/lowercase/partial/unparseable/missing),
missing-header fallback at client level, stable movie trending wrapper
and TV shapes beside pagination, and human page-line presence rules.
Green under pytest strict-markers, unittest discover, and the proxy
trap (zero egress).

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-26 18:49:47 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> bd92ed3fca fix(tmdb): align CLI to genre list, tv search, and find contracts
- Replace raw-argv dispatch with parsed-attribute routing; add the
  documented nested `genre list --type movie|tv` subparser while keeping
  the flat legacy form a clean argparse rejection instead of a crash.
- Route `tv search` through client.search_tv (/search/tv) with TV
  formatting (name / first_air_date) via new cmd_tv_search.
- Gate find --source to exactly the official eight external_source
  values (imdb_id, facebook_id, instagram_id, tvdb_id, tiktok_id,
  twitter_id, wikidata_id, youtube_id); docs explicitly reject retired
  freebase_mid/freebase_id; SKILL.md documents both --type variants.

Adds parser-level regression tests for genre list, endpoint-selection
and output-shape tests for tv search, and parameterized acceptance and
rejection tests for external_source values (13 tests, 10 subtests,
green under pytest strict-markers, unittest discover, and the proxy
trap).

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-26 18:29:26 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> c90fade381 fix(openlibrary): preserve author arrays in work JSON
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-26 10:16:43 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 577628224b chore(catalog): refresh Trakt skill indexes
Regenerate marketplace, Codex, and llms catalogs after thickening Trakt.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-26 10:00:38 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 620d2c94a6 docs(trakt): thicken Trakt API discovery skill
Add researched request-header guidance, endpoint references, offline tests, and eval coverage for Trakt discovery workflows.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-26 10:00:10 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 8cf85fe0a6 docs(tmdb): thicken API skill
Add researched TMDb references, external-ID and detail commands, offline tests, and eval coverage. Refresh the human README and generated catalogs.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-26 09:52:28 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 1d95c4b020 chore(catalog): sync openlibrary blurbs and regenerate catalogs
Root README blurb and skill-triggers row updated to match the new frontmatter description; marketplace.json and llms.txt regenerated via gen-*.rb --write (codex/agents outputs unchanged). Check modes all green.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-26 08:44:48 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> df44337a5d docs(openlibrary): lastfm-model SKILL.md rewrite and README refresh
SKILL.md rebuilt to the lastfm model: keyless setup with covers-host table, intent-grouped commands including new editions/ratings, ISBN-to-work-to-author pipeline recipe, jq guidance, Known Gotchas grounded in researched behavior (ISBN 302 redirects, merge stubs inside HTTP 200, OL...M/W/A suffix system with double-nested author refs, availability-needs-ia projection rule, silent-empty search errors, rate etiquette), When-to-use/When-not-to-use boundaries, and a four-row reference routing table. Body 240 lines. README rewritten for humans with verified What You Get paths. Description updated with imperative verb start and negative boundary.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-26 08:44:37 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 3dd9955770 docs(openlibrary): add eval manifest with negative probe
Six schema-v1 cases: ISBN-to-work-author key-graph walk, ebook discovery pipeline, the ISBN 302-redirect gotcha diagnosis, author disambiguation, a should-not-trigger probe for Koha/MARC library administration (id contains -not-), and keyless-setup/rate-etiquette guidance. Passes validate-evals and the fake-adapter paired smoke.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-26 08:44:08 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> c6caa55bac test(openlibrary): offline suite for extended CLI
27 tests across five classes: help output, argument errors, dry-run plans, mocked-client logic (merge-stub following with .json suffix repair, work-author fallback for authors:null editions, editions paging, ratings join, covers-host URLs, empty-results-as-success), plus two live probes gated behind OPENLIBRARY_LIVE_TESTS=1 that skip cleanly otherwise. Passes strict-markers pytest, unittest discovery, and the proxy-trap zero-egress rerun.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-26 08:43:54 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 8b84e2e824 feat(openlibrary): extend CLI with editions/ratings and redirect handling
New subcommands: editions (per-work edition listing with next_offset) and ratings (joined ratings + bookshelf counts). The client now follows in-body /type/redirect stubs left by merged records (appending .json to stub locations, since extension-less URLs 301 into HTML), recovers author keys from the linked work when edition records ship authors:null, normalizes bare/path key forms, unwraps {type,value} text fields centrally, assembles covers-host URLs skipping -1 placeholders, and validates sort choices client-side to avoid the server's plain-text 500 on unknown values. Existing flags, subcommands, --json, and --dry-run preserved.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-26 08:43:43 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> ce95392915 docs(openlibrary): add API references for key graph, search, ISBN, recipes
Four cited reference files distilled from live-verified research against
openlibrary.org developer docs: OL...M/W/A key graph with merge-stub behavior,
search query syntax and error model, ISBN 302 redirect resolution and covers
host rules, plus worked curl/jq pipelines with a symptom-indexed gotcha table.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-26 08:43:13 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 3e0453b118 fix(jira): correct ConnectionError hint to cite JIRA_SERVER env var
The die() message on connection failure told users to 'use --server',
but no such flag exists; JIRA_SERVER is the only endpoint override.
Replace the false clause with a hint that matches actual behavior.

Flagship scrutiny follow-up (non-blocking issue 1 from
thicken-jira-flagship validation).

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-26 06:50:46 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> af9ca0f41b chore(catalog): sync root README blurb and regenerate catalogs
Root README jira blurb now mentions count matches and the expanded JQL
reference set, matching the updated frontmatter description. Regenerated
.claude-plugin/marketplace.json and llms.txt (description embed).

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-26 06:10:28 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 1aab3e991c docs(jira): lastfm-model SKILL.md rewrite, evals manifest, README
Rewrite SKILL.md (199/500 body lines) with Setup (basic-auth token
mechanics), intent-grouped commands incl. new count/transitions,
three pipeline recipes, jq guidance, Known Gotchas grounded in
researched API behavior (search-endpoint duality with CHANGE-2046
status, transition screen-field requirements, ADF, CAPTCHA lockouts,
rate-limit headers, accountId GDPR migration), When-to-use /
When-not-to-use boundary, and a routing table covering all six
reference files.

Add schema-v1 evals/evals.json: six cases (read-only search,
stalled-sprint bulk-close pipeline, transition-id gotcha,
approximate-count, auth setup/expiry, and a GitHub-issue
should-not-trigger negative probe). Passes validate-evals and the
paired fake smoke.

Refresh README to human format with What You Get table listing real
paths. Regenerate catalogs for the description change; sync root
README blurb.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-26 06:10:12 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 9843ff7f4f feat(jira): extend CLI with count/transitions and pagination fixes
Script: add a 'count' subcommand (POST /search/approximate-count) and a
'transitions' discovery subcommand, plus --resolution on transition
(satisfies Done-screen requirements in one call), offset-paginated
fetches for --max > 50 with empty-page termination when total shrinks,
parsed API error envelopes (errors map + errorMessages) instead of raw
dumps, and 429 handling surfacing Retry-After/RateLimit-Reason. Existing
flags, --json/--dry-run, and subcommands preserved; stdlib+requests only.

Tests: 20-case offline suite (help output, argument errors, dry-run
plans, mocked-client pagination/error/transition logic) passing pytest
and unittest runners including the proxy-trap zero-egress rerun.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-26 06:09:56 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 32474b2848 docs(jira): add REST v3 references for auth, search duality, issues
Two new reference files distilled from live Atlassian docs research:
rest-auth-and-search.md (basic-auth email+token vs OAuth/PAT split,
rate-limit headers, error envelopes, legacy /search offset paging vs
enhanced /search/jql nextPageToken model with CHANGE-2046 deprecation
status) and rest-issues-and-transitions.md (issue CRUD shapes, the
GET-transitions-then-POST flow with screen-field requirements and
resolution semantics, ADF document model). Both carry Sources footers.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-26 06:09:16 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 3ff46ee934 docs(jira): re-expand JQL depth sections and neutralize org example
Add jql-history-and-dates.md covering WAS/CHANGED predicate walkthrough,
relative-date expression tables, and saved-filter composition/naming
conventions, per foundation scrutiny depth directives. Swap cookbook
query 49's organizationMembers("Atlassian") for the YOUR_ORG placeholder
and fix the matching catalog example. All claims cited to live-verified
Atlassian docs.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-26 06:09:06 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 5a097d5693 chore(catalog): regenerate after jira-jql absorption
Refresh all three generated artifacts so they reflect the jira-jql
removal and the renamed skill set:

- .claude-plugin/marketplace.json (154 plugins)
- .codex-plugin/plugin.json (154 skills)
- llms.txt (154 skills)

The codex generator also rewrites .agents/plugins/marketplace.json;
it remains byte-identical to origin/main (single-entry pointer
artifact carrying no skill names).

All three check modes exit 0 against the current tree.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-26 03:16:55 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 28d9903012 docs(jira): absorb jira-jql corpus into reference files
Migrate the retired jira-jql skill content into three dense
jira/references/ files, preserving full substance:

- jql-functions-catalog.md: complete function catalog with fields and
  operators, including JSM approval functions (approved/pending/
  approver/pendingApprovalBy/myApproval family) and SLA functions
  (breached/running/paused/completed/remaining/withinCalendarHours)
- jql-best-practices.md: performance rules, operator precedence
  (AND binds tighter than OR), the empty-value trap (!= excludes
  nulls), troubleshooting flows, marketplace extensions
- jql-cookbook.md: 50 ready-to-run queries organized by role
  (developers, scrum masters, product owners/managers, power users,
  admins)

Wire a Reference Files routing table into jira/SKILL.md pointing at
all three; add JQL gotchas (empty-value trap, precedence, leading
wildcards, search-endpoint duality) and two multi-step pipeline
recipes to SKILL.md. Each migrated file carries a Sources footer with
verified Atlassian doc URLs plus attribution to the retired skill.

Token parity vs source corpus: 53/53 function tokens preserved.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-26 03:14:48 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 17032f8fc7 docs(triggers): cite TMDB_ACCESS_TOKEN env var in tmdb trigger row
Align the convenience-index keyword with the env vars the bundled
tmdb script actually reads (TMDB_ACCESS_TOKEN or TMDB_API_KEY).

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-26 02:34:57 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 2619ba395f docs(skills): add When-not-to-use boundaries to renamed skills
The quality validator enforces an imperative-verb description plus a
negative boundary on every changed SKILL.md. The six renamed skills and
cli-builder carried no substantive boundary, so add a tailored
When-not-to-use section to each naming concrete alternatives (dashboard
administration, sibling platforms, adjacent skills). cli-builder lands
at 499 lines, inside the 500-line budget.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-26 02:26:59 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> ff1dab9273 docs(skills): repair catalog cross-references after -cli renames
Update every audited reference site to the six renamed skills:
root README headings and links (and drop the jira-jql entry ahead of
its absorption), references/skill-triggers.md rows for jellyfin and
tempest plus four new-name rows for ghost/jira/openlibrary/tmdb,
scripts/grandfathered-skills.txt pruned to the three retained *-cli
entries, pyproject.toml deptry exclusion jellyfin-cli -> jellyfin,
neckbeard routing seams, cli-builder example names, and the lastfm /
verification-methodology eval texts mentioning jellyfin.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-26 02:13:56 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> dd97e846ec refactor(skills): drop -cli suffix from six consumer-API skills
Rename ghost-cli, jira-cli, jellyfin-cli, openlibrary-cli, tmdb-cli,
and tempest-cli to ghost, jira, jellyfin, openlibrary, tmdb, and tempest
via git mv. Rewrite frontmatter name fields to match new directories,
rename bundled scripts preserving executable bits, update internal
invocation strings and README quick-start examples, and relocate the
jellyfin pytest suite to jellyfin/scripts/ with its SCRIPT constant now
resolving to the renamed sibling script.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-26 02:10:49 -04:00
Magnus HedemarkandGitHub e10508b034 feat(bmad): add BMad control-plane protocol skill (#400)
* feat(bmad): add BMad control-plane protocol skill

New standalone methodology skill that lets any agent run the BMad method
(Breakthrough Method of Agile AI-Driven Development) as a harness-agnostic
control-plane protocol: five-field intent contracts, direct/bounded/initiative
classification, review-as-triage, failure routing by layer, and autonomy gating
with machine-readable spec status.

- SKILL.md protocol core with progressive disclosure + When not to use
- README.md human-facing install guide
- 9 references: protocol, classification, spec, lifecycle, project-context,
  review-and-failure-routing, autonomy, party-mode, adoption
- 4 templates: SPEC, INTENT, STORY, REVIEW
- scripts/check-spec.py + 16 tests (stdlib, deterministic spec validation)
- evals/evals.json: 9 output-quality cases
- Routing seams from bmad to adjacent skills and back from
  spec-driven-development, product-shaping, implementation-planning, neckbeard
- Catalog updates: root README, skill-triggers, marketplace/plugin/llms.txt

Closes #399

* fix(bmad): address droid-review findings

- check-spec.py: skip headings inside fenced/indented code blocks so a spec
  cannot PASS on section text that only appears in a code sample
- check-spec.py: catch UnicodeDecodeError on non-UTF-8 files and report FAIL
  instead of crashing
- STORY.md template: add created key for resumability/traceability parity
- SPEC.md template: split in-progress and in-review status bullets
- add 2 regression tests (heading-in-fence, non-UTF-8)

* fix(bmad): address droid-review round 2

- check-spec.py: read specs with utf-8-sig so a UTF-8 BOM cannot silently
  disable the frontmatter status check
- check-spec.py: handle standard YAML inline comments after status values
  (status: draft  # pending review) without a false FAIL
- references/protocol.md: make lifecycle phrasing consistent with
  lifecycle.md — four phases plus a learning closeout
- add 2 regression tests (BOM, inline comment)

* fix(bmad): tolerate trailing whitespace on frontmatter delimiters

A spec whose --- delimiter lines carry trailing spaces or tabs would silently
disable the status check and let an invalid status PASS. Relax the delimiter
pattern and add a regression test.

* fix(bmad): ignore inline comments in quoted status values

* fix(bmad): tolerate leading blank lines before frontmatter

* fix(bmad): fail closed on unparseable frontmatter, matching fence markers

Address droid-review round 5 and 6 findings as a single closed class:
- Fail closed when a file opens with a --- delimiter that cannot be parsed,
  so no whitespace/frontmatter permutation can silently disable the status
  check (previously: unparseable frontmatter was treated as 'no status'
  warning, letting an invalid status PASS).
- Track fence opener markers in collect_headings so a mismatched fence no
  longer closes a code block early (false-PASS on missing sections) and an
  unclosed fence no longer swallows real headings.
- Accept empty well-formed frontmatter (---\n---) and closing delimiters
  without a trailing newline.
- STORY.md template: parent-spec points at the sibling SPEC.md.
- README: status vocabulary is not a strict linear chain; blocked is a
  resumable routing signal.

Whitespace/frontmatter mutation sweep: 9 formatting variants x valid/invalid
status all verdict correctly; malformed delimiters fail closed. 29 tests.
2026-08-24 08:05:43 -04:00
Magnus HedemarkandGitHub e4cc9d7efd Merge pull request #398 from magnus919/docs/product-shaping-routing-seams
docs(skills): add product-shaping routing seams
2026-08-23 13:13:55 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> c0412b51bd docs(skills): add product-shaping routing seams (roadmapping bets boundary, neckbeard feature path)
- product-roadmapping-and-portfolio: name the bets boundary in "When Not
  to Use" — this skill sequences strategic bets across cycles; shaping a
  single bounded bet routes to product-shaping.
- product-shaping: sharpen the existing roadmapping boundary sentence to
  spell out bet vs. sequences (appetite + circuit breaker vs.
  continue/pause/kill across cycles).
- neckbeard README: route feature-sized work through product-shaping
  between discovery (product-discovery) and specification
  (spec-driven-development).

Docs-only routing seams per #394; no behavioral content changes.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-23 13:08:25 -04:00
Magnus HedemarkandGitHub af59c45bd5 Merge pull request #397 from magnus919/docs/neckbeard-cold-reader-contract
docs(neckbeard): require cold-reader issue bodies at the change-contract gate
2026-08-23 01:06:24 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> c568bac43e docs(neckbeard): require cold-reader self-contained issue bodies at the change-contract gate
Issue/ticket bodies emitted from a delivery run must be written for a cold
reader: a contributor with none of the session context and no access to the
agent's local artifacts. Encode this at the change-contract layer so any run
that emits tracker artifacts inherits it.

- templates/change-contract.md: new "Issue/ticket body (cold-reader
  requirement)" section listing the five requirements (background naming the
  investigation, complete inline evidence with file:line refs, reproduction
  commands runnable by a stranger, acceptance-criteria checkboxes, no
  agent-local paths or private-artifact references), plus a header-note
  pointer with the litmus test.
- references/journey.md: journey-level statement of the requirement plus
  pointers at phase 1 (intake output row) and phase 5 (verification-planning
  output row) where tracker artifacts are emitted.
- evals/evals.json: add case cold-reader-issue-body-gate covering a body draft
  that references off-repo artifacts ("artifact pyramid", local /tmp ledger,
  detail available on request) and must be rejected/rewritten by the gate.

Closes #385

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-23 01:02:16 -04:00
Magnus HedemarkandGitHub 864bb7d15b Merge pull request #396 from magnus919/docs/neckbeard-gate3-traceability
docs(neckbeard): require requester-outcome traceability at gate 3
2026-08-23 00:53:00 -04:00
Magnus HedemarkandGitHub 545f92a76a Merge pull request #393 from magnus919/feat/product-shaping-skill
feat(product-shaping): add Shape Up adaptation skill for bounded product work
2026-08-23 00:51:01 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 1cd5e19620 docs(neckbeard): require requester-outcome traceability at gate 3
Implements issue #378 (Finding F4 of the journey SDLC validation brief):
separate validation from verification in the change-request journey.

Gate 3 now requires that at least one SPEC.md acceptance criterion traces
to the requester's stated outcome/problem restated from primary evidence
in phase 2 - verification proves the build matches the spec; this
criterion proves it solves the requester's actual problem (15288/12207
validation vs. verification discipline).

- references/stages.md: authoritative new Gate 3 bullet (single source
  of truth for gate definitions)
- references/journey.md: phase 4 Output and Gate rows aligned, deferring
  to stages.md; phase-continuity and gate summary unchanged
- templates/change-contract.md: acceptance-criteria guidance requires a
  criterion tracing to the Problem section
- templates/delivery-packet.md: acceptance-criteria mapping field asks
  for the requester-outcome trace for the gate-3 verdict
- evals/evals.json: gate-3 assertions updated in four full-path cases;
  all 13 case IDs stable

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-23 00:48:12 -04:00
Magnus Hedemark 571acdffca chore(generated): refresh catalog artifacts after product-methodology description update 2026-08-23 00:45:30 -04:00
Magnus Hedemark 186e7d636a fix(product-methodology): start description with imperative verb
CI's changed-skill quality gate requires descriptions to begin with a
recognized imperative verb (repo AGENTS.md rule). The seam edit in this PR
made the file a changed skill, surfacing the pre-existing violation.
2026-08-23 00:45:30 -04:00
Magnus Hedemark 673335d21a feat(product-shaping): add Shape Up adaptation skill for bounded product work
New class-level methodology skill adapted from Ryan Singer's Shape Up
(Basecamp, 2019), extended for human+AI-agent build teams:

- SKILL.md: core loop (shape -> bet -> build -> move on) with entry-point
  routing and negative trigger boundaries
- 6 references: principles, shaping (incl. non-UI work), betting, building,
  hybrid-adaptation, anti-patterns (independent field record 2019-2026)
- 2 templates: PITCH.md (five ingredients), SCOPE_MAP.md (hill states)
- evals: 6 output-quality cases incl. hybrid and routing regression cases

Routing surfaces: catalog README entry, skill-triggers index row,
product-methodology seam (consume won bets; no pre-bet shredding).
Generated artifacts regenerated against current main.

Closes #387
2026-08-23 00:45:30 -04:00
Magnus HedemarkandGitHub b0f3a954de Merge pull request #395 from magnus919/docs/neckbeard-phase9-lesson-capture
docs(neckbeard): add skip-transparent lesson capture to phase 9 closeout
2026-08-23 00:41:04 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 7c0de4cb76 docs(neckbeard): add skip-transparent lesson capture to phase 9 closeout
Implements issue #377 (journey dossier F2, ADAPT verdict): phase 9 closeout
now records lesson capture per stages.md Stage 6 "Deliver and learn" — either
the reusable lesson(s) and their durable destination (skill, memory, or
project docs), or an explicit "no reusable lesson identified" determination.
Mirrors skip transparency: silent omission is prohibited. Terminal-state
semantics stay intact — lessons are recorded IN the terminal record; a fired
trigger or follow-up starts a new change request via phase 1 intake.

- references/journey.md: phase 9 Output row gains the lesson-capture field;
  phase-continuity row updated ("terminal; triggers and lessons recorded in
  the terminal record").
- references/delivery-packet.md: group (i) row gains lesson capture; terminal
  semantics cover lessons alongside triggers; skip-transparency doctrine
  cross-referenced for closeout lessons.
- templates/delivery-packet.md: section (i) fillable "Lessons captured" field
  with durable-destination note + example line.
- references/lifecycle.md: intro, terminal-states closeout note, and closeout
  row aligned with the extended group-(i) field set.
- evals/evals.json: expected_output + assertions extended in bug-fix-
  reproduction-regression and refactor-characterization-architecture-review
  (13 IDs stable).

stages.md untouched: Stage 6 already mandates lesson capture; journey/packet
now consume it. README table unchanged (still accurate).

Closes #377

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-23 00:36:25 -04:00
Magnus HedemarkandGitHub 11a5be93ef Merge pull request #392 from magnus919/docs/neckbeard-phase9-rollback-triggers
docs(neckbeard): record rollback/follow-up triggers at phase 9 closeout
2026-08-23 00:24:38 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 176086dc48 docs(neckbeard): record rollback/follow-up triggers at phase 9 closeout
Implements issue #376 (journey dossier F1, ADAPT-minimal verdict): phase 9
closeout now records rollback/follow-up triggers alongside terminal state +
release evidence, stating what would cause re-entry; operational discoveries
route to a NEW change request via phase 1 intake instead of resurrecting the
terminal packet. Terminal-state semantics stay intact.

- references/journey.md: phase 9 Output row gains trigger fields + new-CR
  routing; phase-continuity row updated ("terminal; triggers recorded in the
  terminal record").
- references/delivery-packet.md: group (i) row gains trigger fields; terminal
  semantics clarify triggers are recorded in, not re-opening, the packet.
- templates/delivery-packet.md: section (i) fillable field + example.
- references/lifecycle.md: intro, terminal-states note, closeout row aligned.
- evals/evals.json: assertions extended in bug-fix-reproduction-regression,
  schema-migration-rollback-release-readiness, release-authority-blocked-
  terminal-state (13 IDs stable).
- research brief: F1 citation of "SKILL.md step 6" corrected to step 5.

No phase added; stages.md untouched (lesson capture is issue #377).

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-23 00:20:42 -04:00
Magnus HedemarkandGitHub a855475258 Merge pull request #391 from magnus919/ci/skillevaluator-advisory-gate
ci(skillevaluator): add advisory SkillEvaluator quality gate
2026-08-23 00:11:28 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> aa19b692f9 ci(skillevaluator): add advisory SkillEvaluator quality gate
Add NVIDIA SkillEvaluator as an advisory (non-blocking) Tier 1 gate on
PRs and pushes touching skill-relevant paths. Runs the documented
keyless check set (schema,pii,license,quality,unicode,lint) pinned to
skillevaluator v0.1.0 per changed skill, uploads JSON reports as an
artifact, and posts one advisory summary line per skill to the job log.

SkillSpector is deliberately not installed: upstream still ships it
"separately installed and unpinned", so the security scan is excluded
by design until a documented compatible pair exists.

Closes #383

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-23 00:06:26 -04:00
Magnus HedemarkandGitHub 74dc86f61d Merge pull request #390 from magnus919/chore/polish-grade-c-skills-part2
chore(skills): polish grade-C skills (part 2 of 2)
2026-08-22 23:45:23 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> c628897b6f chore(catalog): regenerate artifacts for updated yc-weekly-growth-compass description
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-22 23:38:55 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 1a6d77972a chore(writers-helper): add Available Scripts table and Prerequisites/Limitations
Convert the prose Scripts list into the formal table with copy-pasteable
invocations verified against each script --help, and add factual
Prerequisites and Limitations.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-22 23:38:55 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 1f281206df chore(workflow-architect): add Prerequisites and Limitations sections
This resource-based skill ships no scripts, so instead of an Available
Scripts table, document the resources it loads (sub-skill protocols,
references, generation templates), the agent capabilities it needs, and
its real limitations (Hermes-runtime targeting, observation-mode turn
threshold, inference-only discovery).

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-22 23:38:55 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 82f740f12a chore(nous-branding): add Available Scripts table and Prerequisites/Limitations
Consolidate the two generation/post-processing scripts into the formal
Available Scripts table and add factual Prerequisites and Limitations,
slotting cleanly into the post-#382 references structure.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-22 23:38:43 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> cedf44c295 chore(data-cleaning): add Available Scripts table and Prerequisites/Limitations
Document both previously undocumented pytest suites alongside the profiler
and reconciler in the formal table, and add factual Prerequisites and
Limitations.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-22 23:38:43 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> dbec36cddd chore(yc-weekly-growth-compass): add Prerequisites/Limitations, fix description gate
Add factual Prerequisites and Limitations. Lead the description with an
imperative verb and add an explicit negative boundary to satisfy the
quality validator; keep trigger keywords intact.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-22 23:38:43 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> c9c4fc531b feat(yc-weekly-growth-compass): add eval manifest and fix stale script flags
Add schema-v1 evals/evals.json with six cases covering growth check-ins,
series trending with time-to-target, decision framing, projections, a
should-not-trigger case, and benchmark honesty. Fix documented flags that
do not exist in the script (--project-weeks/--target-revenue/--add-to-
weekly) to the real ones (--project-periods/--target-value/--dry-run).

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-22 23:38:43 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 249224507c feat(woodpecker-ci): add eval manifest for output quality
Add schema-v1 evals/evals.json with seven cases covering compose deployment,
pipeline YAML authoring, queued-pipeline diagnosis, secret safety for
untrusted PRs, forge-admin scope boundary, GitHub Actions should-not-
trigger, and upgrade/backup planning.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-22 23:38:29 -04:00