chore: back-merge main into next (conflicts)#502
Closed
aidd-bot[bot] wants to merge 19 commits into
Closed
Conversation
Align the project messaging with the framework's current branding and focus.
Co-authored-by: aidd-bot[bot] <290648294+aidd-bot[bot]@users.noreply.github.com>
Convert every `@../` reference in the action files of skill-generate and project-memory to standard markdown links `[name](path)`, so citations are clickable in editors and on GitHub. Propagate the convention to the contract so generated skills follow suit: R6 now mandates a markdown link, R8 drops the `@`-chain wording, and review-protocol says "cited references". Functional `@`-imports in the memory block (`@aidd_docs/...`) are untouched: those are load mechanics, not citations. Sync docs/CATALOG.md skill-generate action names to the shipped set. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0177RKF7c5Wpv329Q7QYquV2
…ork (#440) * feat(aidd-context): add research and apply actions to cook skill Extend 12-cook from author-only to a fuller loop: - 03-research: refine the target recipe via a checklist, fan out one agent per scouting angle, then present alternatives / coverage gaps / counter-intuitive wins plus a recommendation. Ephemeral, never writes. - 04-apply: execute an existing recipe against the project via an agent that tracks the steps as a todo list and confirms before mutating. - upsert: qualitative overlap guard (none/partial/high) that suggests updating an existing recipe instead of creating a duplicate. - recipe-template: steps become "#### N)" headings with what/why, actionable how-bullets, and a mandatory concrete example (command with output, snippet, or screenshot/video). New references/assets: research-playbook, refine-goal-checklist, research-checklist. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * feat(aidd-context): verify each research candidate before presenting Add a Verify step to cook's 03-research: after curation, spawn one agent per surviving candidate to confirm it exists, capture its official link, and record its latest state. Drop anything that cannot be confirmed against an official source. This makes the checklist's "Confirm claims" real and guards the recipe against hallucinated tools or methods. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * docs(framework): add token optimization recipe Add recipes/token-optimization.md: a ranked list of token-saving tips for AI coding assistants (measure first, trim CLAUDE.md, caveman, RTK/SNIP, CLI over MCP, progressive disclosure, compact, model routing, cap thinking), each tip in the new template format with a concrete example and an official link verified to exist. Register it in the recipes index. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * refactor(aidd-context): extract recipe contract and tighten cook template Move the recipe authoring rules out of the template's HTML comment into references/recipe-contract.md, cited by SKILL.md and upsert. The template keeps only the scaffold. - Steps heading carries the goal ("## Steps to <outcome>") and each step opens with an emoji. - Step how-bullets follow where-it-is -> install-from-URL -> how-to-use, benefit-first and filler-free. - "## Why" is short, keyword-led, and bold. - SKILL.md description is shorter and high-level, triggered on "recipe" / "cook" / "/cook". Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * fix(aidd-context): repair 12-cook SKILL.md YAML frontmatter The description contained an unquoted "sheets: list" colon, which YAML parses as a mapping value and rejects ("mapping values are not allowed here"), breaking the skill's frontmatter. Replace the colon with a dash. The bug pre-dated this branch (same colon on main). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * refactor(aidd-context): refine cook recipe structure and apply R13 to cook Review feedback on the cook skill, plus the new includes convention: - Recipe template drops the Time field, groups steps under three level subheadings (Beginner / Intermediate / Expert), and aligns the Level enum to Expert. - upsert now runs `research` (03) first for any new or substantial recipe and drafts only from its verified results, never from memory — the "always research" rule was being skipped as a routing note. - Apply R13 (explicit, scoped includes): the action-specific research aids move out of SKILL.md and are cited from 03-research in fenced blocks; refine-goal-checklist is renamed research-goal-checklist; SKILL.md lists only the global recipe-template and recipe-contract. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * refactor(aidd-context): make recipe level subheadings optional Level grouping was effectively mandatory. Make the contract state it is optional: group steps under Beginner/Intermediate/Expert only when the recipe spans difficulty levels and grouping helps; a short or single-level recipe lists its steps directly. Relax the upsert Test accordingly. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * docs(framework): conform token-optimization recipe to recipe contract Align the recipe with references/recipe-contract.md: drop the Time row (no longer in the template), name the section "Steps to <outcome>" instead of a bare Steps, remove the "ranked by impact" filler line, and give each step how-bullets plus a concrete example. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * docs(framework): split measure steps per tool and drop metadata table Apply review of the token-optimization recipe: - Goal becomes a plain sentence (no blockquote). - Drop the Level/Prerequisites table; level now lives in the subheadings. - Split the bundled "Measure first" step into one step per tool (/context, /cost, /insights, an analytics tool) — one subheading per action. - Each measure step says how to use and read the command, and carries an example output; the analytics step uses a real prompt-analytics run (volumes rounded, cost omitted) showing cache reads dominate. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * docs(framework): drop the Goal label from token-optimization The recipe opens with a plain description sentence, no "Goal:" label. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * refactor(aidd-context): recipe header = description sentence, no table Rules extracted from the token-optimization recipe review: - A recipe opens with the H1 title then one plain description sentence — no "Goal:" label, no blockquote, no metadata table. list/upsert parse that sentence; the index becomes `| Recipe | Description |` (Level was dropped, level now lives only in the optional subheadings). - One step = one action; never bundle several tools or commands under a single heading. - Every step's example shows real command output (from docs or by running it); the research playbook now requires capturing a real example and marking interactive output for the human to paste. - `## Why` is one idea per line. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * docs(framework): use the real prompt-analytics dashboard image Replace the fabricated text output with the tool's official dashboard screenshot (cost by token type makes "cache reads dominate" visible). The slash-command placeholders now ask for a screenshot of the real output. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * refactor(aidd-context): prefer images over text examples A real screenshot or GIF is unfakeable, faithful, and credible, where a text example can be approximated (the failure we hit). Make the contract and the research playbook prefer an image that matches the action — e.g. a tool's official screenshot — falling back to real text output only when no image exists. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * docs(framework): show real tool usage in token-optimization - caveman: show its real `/caveman` invocation (and modes), not just a before/after. - RTK: a Mermaid diagram of the proxy flow + the real `rtk <command>` syntax (was a wrong `rtk proxy …`) and the README's own 200->10 token saving. - CLI vs MCP: a comparison table instead of prose. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * refactor(aidd-context): add tool-example rules to recipe contract From the token-optimization review: - Show how to invoke a tool (its real command or slash invocation). - Reuse the canonical example from the tool's own site or README, never an invented one. - A "prefer X over Y" step uses a comparison table, not prose. - A structural or flow concept (proxy, pipeline, architecture) gets a small Mermaid diagram. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * docs(framework): use caveman's real before/after example Replace the invented caveman before/after with the verbatim example from its README (rule F: reuse the tool's own canonical example). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * docs(framework): numbered actions, valid-JSON config, tighter sections - Actions are numbered lists; descriptions are prose (no description-bullets). - settings.json shown as valid JSON, not a bash fragment. - RTK Mermaid uses concrete values (cargo test ~25k -> ~2.5k tokens). - CLI vs MCP notes MCP tool/context selection (cheaper, still slower). - Step 10 reworded plainly ("load knowledge on demand"). - Drop the weak Verify and the redundant Related; add a short conclusion. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * refactor(aidd-context): add bullet/diagram/config/section rules to contract From the token-optimization review: - Actions are a numbered list; descriptions and indications are prose, never bullets. - A Mermaid diagram carries concrete example values. - A config example uses the file's real syntax (valid JSON for settings.json, valid YAML for frontmatter, ...). - Reuse a tool's canonical example captured verbatim — never a paraphrase or on the strength of a summary that one exists. - No `## Related` section (links live inline); `## Verify` is optional; recipes may end with a short conclusion. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * docs(framework): expert steps use verified Claude Code config - Step 10 now audits which skills/tools run via `Ctrl+O` (toggles the detailed transcript), instead of the vaguer "load on demand". - Step 11 routes by difficulty with the real `model:` frontmatter field on a skill or agent (haiku/sonnet/opus/inherit) — example agent pinned to haiku. Both verified against the official Claude Code docs (interactive-mode, skills, sub-agents). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * docs(framework): point the instruction-file step at AGENTS.md Use the framework's own concise AGENTS.md as the worked example for a trimmed instruction file, with its real rules (answer first, no narration), instead of a generic snippet. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * refactor(aidd-context): apply analyses a recipe and asks before acting A recipe is often a human tutorial, not an agent-runnable procedure. So apply now reads the recipe, classifies each step agent-doable vs human-only, and asks the user what to do before any change — then runs the chosen agent-doable steps and reports the human-only ones. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * docs(framework): add five verified token levers to the recipe From a research pass, all verified against official Claude Code docs: - Plan mode (Shift+Tab ×2) — avoid execution-phase rework. - `/clear` between tasks — drop stale context instead of re-billing it. - Deny reads (`permissions.deny`) — keep vendor/dist/secrets out of context; the official answer to the unshipped `.claudeignore`. - Subagent offload — run high-volume ops in an isolated context. - Protect cache hits — avoid mid-task model/MCP/effort switches that invalidate the cache (closes the loop on "cache reads dominate"). Also fold the built-in `outputStyle: concise` into the "talk less" step. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * feat(aidd-context): bundle cook recipes in skill * feat(framework): publish AIDDy v2 pet * docs(framework): reposition readme as agnostic token-optimized framework * feat: avoid uncached AGENTS.md * docs: add fixing behavior for assertions --------- Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
…455) Splits source out of gather so origin selection (conversation, file, diff, review) is explicit before extraction runs, and renames assets/decision-template.md to adr-template.md to match its actual output. CATALOG.md's 10-learn index is regenerated to match. Folds in fixes found during a headless claude+codex audit of the skill (13 scenarios x 2 tools): - sync locates update_memory.js instead of assuming a fixed path that doesn't exist in either tool's real install layout - never scaffold the memory bank, even under a blanket write pre-approval - sync's own git-diff-cached test reflects a pre-staged index instead of demanding it be empty - sources.md again defaults to conversation when no hint is given, matching pre-refactor behavior, instead of always requiring context inference - the two memory-write transversal rules merge into one, trimming the router closer to the smallest shape that still states every rule Closes #278 Refs #419
Bumps [github/codeql-action/analyze](https://github.com/github/codeql-action) from 4.37.0 to 4.37.1. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](github/codeql-action@99df26d...7188fc3) --- updated-dependencies: - dependency-name: github/codeql-action/analyze dependency-version: 4.37.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…460) Bumps [github/codeql-action/autobuild](https://github.com/github/codeql-action) from 4.37.0 to 4.37.1. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](github/codeql-action@99df26d...7188fc3) --- updated-dependencies: - dependency-name: github/codeql-action/autobuild dependency-version: 4.37.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…rved Merges ai-driven-dev/aidd-cli into this repo as cli/ via git subtree — full commit history preserved (reachable via the subtree-merge commit's second parent, kept on the source branch chore/migrate-cli-into-framework, not deleted by this squash). cli/ stays self-contained: own package.json, own lockfile, not a pnpm workspace member. - release-please: cli added as a ninth package, release-type: node - CI: new cli-ci.yml (typecheck/lint/test/build/knip/jscpd), native path-filter on cli/** only - publish-cli in ci.yml, gated on release-please's paths_released, real npm OIDC trusted publishing (no NPM_TOKEN secret) - Fixed along the way: npm README stub bug, a pnpm-version/cache-path CI bug, a stale duplicate memory-sync script and its dead test, hardcoded personal paths, dead ISSUE_TEMPLATE/CONTRIBUTING.md left over from the standalone repo - ai-driven-dev/aidd-cli stays active, unarchived, until a real release from here is proven end to end Refs #448. Full plan, phase files, and audit reports: cli/aidd_docs/tasks/2026_07/2026_07_20_migrate-cli-into-framework/
package.json never had repository/homepage/bugs fields at all (the migration plan assumed they existed and needed updating — they didn't exist). Added them pointing at ai-driven-dev/framework with directory: "cli" so npm's package page links to the right subtree. aidd_docs/README.md (the standard scaffold every aidd setup generates) had one stale link to the old standalone repo.
package.json was missing license (npm shows this prominently on the package page) and keywords (npm search discoverability). license: MIT matches framework's own root LICENSE — same repo, same license, no ambiguity to resolve.
Co-authored-by: aidd-bot[bot] <290648294+aidd-bot[bot]@users.noreply.github.com>
release-please's PR #485 computed cli's next version as 4.0.0 instead of bumping forward from 5.1.3. Root cause: cli had no prior cli-v* tag to anchor its version walk, so it fell through to an old, otherwise-already-consumed root Release-As: 4.0.0 directive (commit 5b0fc9d, framework's own major-bump forcing from May 2026, unrelated to cli) and applied it to the new component. Both npm and GitHub Packages correctly rejected the resulting publish (existing 4.0.0 from the pre-migration standalone repo, real current version is 5.1.3 on both registries — untouched). Bad tag/release cli-v4.0.0 already deleted. Reverts cli/package.json and the manifest's cli entry to 5.1.3, and drops the bogus CHANGELOG entry. A cli-v5.1.3 tag/release will be created on top of this commit to anchor future release-please runs so the walk never reaches that old directive again.
Co-authored-by: aidd-bot[bot] <290648294+aidd-bot[bot]@users.noreply.github.com>
…nchor for release-please (#493) A second, unrelated release-please cycle (PR #489, "chore: release main") auto-merged moments after #488 and independently recomputed cli's version, reintroducing 4.0.0 the same way #485 did, even though that run's own log showed it correctly reading 5.1.3 from the manifest as the baseline. The manifest baseline alone does not bound the version-bump walk; only a matching cli-v* release does, and none existed yet when that run started. Both npm and GitHub Packages rejected the resulting publish again (pre-existing 4.0.0, same as before), still untouched at the real 5.1.3. Bad tag/release cli-v4.0.0 deleted again. A cli-v5.1.3 anchor release now exists (pointing at bdd12c6, the commit right before the cli migration landed), created before this commit merges, so the next release-please run has a real boundary to stop its walk at and can no longer reach the old, already-consumed version-forcing directive from commit 5b0fc9d (framework's own unrelated major-bump forcing from May 2026, targeting 4.0.0 for the root package only, not cli). This commit also serves as the nudge for release-please to re-evaluate cli against that new anchor and correctly propose 5.1.4 next, carrying the real pending fixes, migration, repoint, license and keywords, into a real changelog entry and npm and GHP publish.
Co-authored-by: aidd-bot[bot] <290648294+aidd-bot[bot]@users.noreply.github.com>
) Any commit touching .release-please-manifest.json (a root-level file) counts toward the "." package's own version bump, since root has no path restriction. Today's cli version-regression fixes needed to hand-edit that file directly and, as a side effect, cut two extra framework releases (v5.5.3, v5.5.4) that carried no real content change for root. exclude-paths (documented in release-please's manifest schema, ReleaserConfigOptions) skips a commit for a given package when every file it touches falls under the listed paths. Scoped to the "." package only, so cli's and the plugins' own path-based tracking are unaffected.
Co-authored-by: aidd-bot[bot] <290648294+aidd-bot[bot]@users.noreply.github.com>
…eck excludes (#500) Two real, distinct issues were hiding behind the migration's temporary --ignore flags: - 8 links in plugin-architecture-master.md pointed at real, existing sibling files whose names contain a literal '#' (e.g. 2026_04_27-#260-plugin-architecture-part-1.md). Markdown link parsers treat an unescaped '#' as a URL fragment separator, truncating the path before the file check ever runs. URL-encoding it as %23 fixes it; the checker already decodeURI()s targets. - The remaining ~235 flagged references under cli/tests/fixtures/** and cli/aidd_docs/tasks/** are not a mix of real links and shorthand: cli/tests/fixtures/** is synthetic mock trees that never materialize every file they reference (confirmed: the full test suite passes with those template files absent), and cli/aidd_docs/tasks/** is a historical record whose @path references and inline rewrite-rule examples are expected to drift as the codebase evolves after the fact. Scrubbing them file-by-file would just rewrite historical docs that were accurate when written. Moved that exemption into the checker itself (DEFAULT_IGNORES, applied on top of any --ignore given) rather than the hook command, so `node scripts/check-markdown-links.js` with no flags is the thing that's actually clean. lefthook.yml's markdown-links command now carries no --ignore flags and no TEMPORARY comment.
Co-authored-by: aidd-bot[bot] <290648294+aidd-bot[bot]@users.noreply.github.com>
Contributor
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Automated back-merge hit conflicts (CHANGELOG / manifest / version files). Resolve manually, then merge into next.