Skip to content

docs: Add prerequisites and beginner resources to README - #3000

Open
Ivan-houzhiwen wants to merge 1073 commits into
rysweet:mainfrom
Ivan-houzhiwen:docs-prerequisites
Open

docs: Add prerequisites and beginner resources to README#3000
Ivan-houzhiwen wants to merge 1073 commits into
rysweet:mainfrom
Ivan-houzhiwen:docs-prerequisites

Conversation

@Ivan-houzhiwen

Copy link
Copy Markdown
Contributor

Summary

Added prerequisites note and beginner resources section to README.md.

Changes

  • Added prerequisites note at top of README explaining required knowledge
  • Added Resources for Beginners section with links to learning materials

Issue Reference

Fixes #2980

rysweet and others added 30 commits February 11, 2026 12:17
Fix import ordering in session_stop.py hook
Co-authored-by: rysweet <18054722+rysweet@users.noreply.github.com>
Resolved conflicts by:
- Accepting version 0.5.1 from main (pyproject.toml)
- Keeping namespaced staging implementation (copilot.py, tests)
- Preserving auto-derived workflow step count feature
- Maintaining parity test improvements

All conflicts resolved while preserving review comment fixes.

Co-authored-by: rysweet <18054722+rysweet@users.noreply.github.com>
Co-authored-by: rysweet <18054722+rysweet@users.noreply.github.com>
…ucture

Add Documentation Validation Infrastructure
…skills-updates

Update Power Steering Hooks and Skills Documentation
…b-scraper-skill

feat: Add authenticated-web-scraper skill
Co-authored-by: rysweet <18054722+rysweet@users.noreply.github.com>
Co-authored-by: rysweet <18054722+rysweet@users.noreply.github.com>
…ages

Co-authored-by: rysweet <18054722+rysweet@users.noreply.github.com>
Co-authored-by: rysweet <18054722+rysweet@users.noreply.github.com>
Co-authored-by: rysweet <18054722+rysweet@users.noreply.github.com>
Co-authored-by: rysweet <18054722+rysweet@users.noreply.github.com>
Co-authored-by: rysweet <18054722+rysweet@users.noreply.github.com>
…ed line numbers

Co-authored-by: rysweet <18054722+rysweet@users.noreply.github.com>
rysweet and others added 26 commits February 28, 2026 13:08
… routing docs (rysweet#2715)

* fix: heredoc stdin conflict, hierarchical memory path divergence, ops routing docs

Three bug fixes in one PR:

rysweet#2581: Replace pipe+heredoc stdin conflict with env var passing in
launch-parallel-round-1 and complete-session recipe steps. The old pattern
`echo "$JSON" | python3 - <<'PYEOF'` relied on bash operator precedence
(pipe wins over heredoc) which is fragile and breaks on refactoring.
New pattern passes JSON via environment variables, making heredoc the
only stdin source for python3.

rysweet#2655: Fix hierarchical memory path divergence in segmented learning.
The old conditional `not (db_path / "lock").exists()` caused segment 2+
to use a different DB path than segment 1 (because Kuzu creates a lock
file after first use). Now always uses db_path/kuzu_db when an existing
kuzu_db subdirectory exists, ensuring all segments share one database.

rysweet#2601: Align Operations routing description in SKILL.md fallback section
with the rest of the document and dev.md. Was "Respond directly", now
correctly says "Builder agent (direct execution, no workflow steps)".

145/145 tests pass, YAML validates.

Closes rysweet#2581
Closes rysweet#2655
Closes rysweet#2601

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* [skip ci] chore: Auto-bump patch version

---------

Co-authored-by: Ubuntu <azureuser@devo.xh24nwhiyviedbtbx54dafh01e.dx.internal.cloudapp.net>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* Add agent memory integration to AutoMode

New module: launcher/agent_memory.py
- Wraps amplihack-memory-lib ExperienceStore for AutoMode agents
- Stores goals, objectives, plans, turn results, evaluations, learnings
- Recalls past experiences for prompt injection
- Graceful degradation if amplihack-memory-lib not installed

AutoMode hooks (both sync and async sessions):
- Session start: store goal + recall past experiences
- Turn 1: store clarified objective
- Turn 2: store execution plan
- Turns 3+: store execution output + evaluation per turn
- Session end: store learning summary + close connection

Requires: pip install amplihack-memory-lib

Tested: 8 experiences stored, search returns relevant results,
statistics show storage usage.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* [skip ci] chore: Auto-bump patch version

---------

Co-authored-by: Ubuntu <azureuser@devi.yb0a3bvkdghunmsjr4s3fnfhra.phxx.internal.cloudapp.net>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* Fix memory: use kuzu backend (not sqlite), fix close()

- Remove explicit backend='sqlite' so ExperienceStore uses its
  default kuzu graph backend
- Fix close() -- ExperienceStore handles cleanup internally

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* [skip ci] chore: Auto-bump patch version

---------

Co-authored-by: Ubuntu <azureuser@devi.yb0a3bvkdghunmsjr4s3fnfhra.phxx.internal.cloudapp.net>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
…ion (rysweet#2722)

* fix: auto-cleanup workstream directories after completion to prevent disk exhaustion

The multitask orchestrator created git clones for each workstream but never
cleaned them up. A session with 60 workstreams could consume 49-72GB of disk.

Changes:
- Add _cleanup_workstream_dir() that removes work_dir after workstream completes
  while preserving log files (which live in tmp_base, not work_dir)
- monitor() now auto-cleans completed/failed workstreams each polling cycle
- Timed-out workstreams are also cleaned after termination
- Report shows auto-cleanup stats (dirs cleaned, GB freed)
- Disk space threshold lowered from 10GB to 5GB (shallow clones use ~50MB)

Impact: 60-workstream session goes from 72GB disk usage to <1GB (logs only).

Closes rysweet#2527

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* [skip ci] chore: Auto-bump patch version

---------

Co-authored-by: Ubuntu <azureuser@devo.xh24nwhiyviedbtbx54dafh01e.dx.internal.cloudapp.net>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
…de Code setup (rysweet#2716)

Five documentation fixes for new user onboarding:

rysweet#2480: PREREQUISITES.md now includes a table explaining WHAT each tool does
and WHY amplihack needs it (was just a bare list of tool names).

rysweet#2484: Quick Check section no longer tells users to run `amplihack` before
installing it. Now provides a copy-paste shell one-liner that checks
prerequisites without requiring amplihack to be installed.

rysweet#2481: Tutorial no longer opens with Task(subagent_type="guide") syntax.
Now leads with natural language ("just type this in Claude Code"),
explains what agents are in plain English, and puts Task() syntax
under an "advanced users" section.

rysweet#2482: COPILOT_CLI.md now has a "Where Do Agents Come From?" section
explaining that agents are authored by amplihack and symlinked
for Copilot discovery.

rysweet#2485: New CLAUDE_CODE_SETUP.md covering API key acquisition, cost
expectations, permanent shell setup, and verification steps.

Closes rysweet#2480
Closes rysweet#2481
Closes rysweet#2482
Closes rysweet#2484
Closes rysweet#2485

Co-authored-by: Ubuntu <azureuser@devo.xh24nwhiyviedbtbx54dafh01e.dx.internal.cloudapp.net>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ror (rysweet#2724)

rysweet#2493: sync-recipes-upstream.yml failed with "pathspec 'amplifier-bundle/recipes/'
did not match any file(s)". The git add lines referenced paths not produced by
the sync. Fixed: use --ignore-missing, check if anything is staged before
committing, and guard PR creation on non-empty branch.

rysweet#2492: pm-roadmap-review.yml failed with "gh: set the GH_TOKEN environment
variable". Changed from secrets.GITHUB_TOKEN to github.token (canonical form),
added GITHUB_TOKEN as fallback, and added pre-flight gh auth check.

Closes rysweet#2493
Closes rysweet#2492

Co-authored-by: Ubuntu <azureuser@devo.xh24nwhiyviedbtbx54dafh01e.dx.internal.cloudapp.net>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…eet#2725)

* feat: quality-audit-cycle v2.0 — seek/validate/fix/recurse loop

Restructures the quality audit recipe with a recursive improvement loop:

1. SEEK: Scan codebase for quality issues (reviewer agent)
2. VALIDATE: Independent validation of each finding (analyzer agent)
3. FIX: Address only confirmed findings (builder agent)
4. RECURSE: Re-audit if fixes were applied, stop if clean or max cycles

Closes rysweet#2707

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* [skip ci] chore: Auto-bump patch version

---------

Co-authored-by: Ubuntu <azureuser@devo.xh24nwhiyviedbtbx54dafh01e.dx.internal.cloudapp.net>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
… analysis pyright (rysweet#2728)

* fix: Windows platform clarity + static analysis uses pyright

rysweet#2477: README says "Windows (via WSL or native)" instead of
"Windows not directly supported".

Static analysis workflow source updated to use pyright instead of
pylint + mypy. The .lock.yml needs recompilation via `gh aw compile`.

Closes rysweet#2477

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* refactor: split integrated_proxy.py from 4177 to 1467 lines (65% reduction)

Extract 6 focused modules from the monolithic integrated_proxy.py:

- exceptions.py (117 lines): All exception classes
- models.py (305 lines): Pydantic models and constants
- monitoring.py (330 lines): Logging, formatters, error logger
- azure_errors.py (418 lines): Error classification, retry, fallback manager
- conversion.py (1041 lines): Anthropic↔Azure/LiteLLM conversions
- streaming.py (741 lines): Tool streaming, response handlers

Backward compatibility preserved via re-exports in integrated_proxy.py.

Closes rysweet#2637

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: remove opus[1m] default from Copilot CLI launcher

The Copilot CLI uses different model identifiers than Claude Code.
"opus[1m]" is a Claude Code-specific alias not recognized by Copilot,
causing startup failures. Now only passes --model when COPILOT_MODEL
env var is explicitly set by the user, letting Copilot use its default.

Closes rysweet#2729

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* docs: remove pirate dialect from 3 documentation files

Standardize language in PLUGIN_ARCHITECTURE.md, file-organization.md,
and first-docs-site.md. Replaced "fer" → "for", "t'" → "to",
"o'" → "of", "ye" → "you", "be loaded" → "are loaded", etc.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Ubuntu <azureuser@devo.xh24nwhiyviedbtbx54dafh01e.dx.internal.cloudapp.net>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…sweet#2734)

Co-authored-by: Ubuntu <azureuser@devo.xh24nwhiyviedbtbx54dafh01e.dx.internal.cloudapp.net>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ysweet#2735)

Closes rysweet#2478

Co-authored-by: Ubuntu <azureuser@devo.xh24nwhiyviedbtbx54dafh01e.dx.internal.cloudapp.net>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
When recipe context variables are declared but not provided via --context,
the runner now infers values from:

1. AMPLIHACK_CONTEXT_<KEY> environment variables
2. Well-known env vars (AMPLIHACK_TASK_DESCRIPTION, AMPLIHACK_REPO_PATH)
3. Recipe YAML defaults (already worked, preserved)

Explicit --context values always take precedence (highest priority).
Inference is logged when --verbose is set.

This enables running recipes without explicit context when the environment
provides the values (e.g., from the smart-orchestrator or shell setup).

Closes rysweet#2349

Co-authored-by: Ubuntu <azureuser@devo.xh24nwhiyviedbtbx54dafh01e.dx.internal.cloudapp.net>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…hatches (rysweet#2741)

* fix: make recipe runner MANDATORY for /dev — close all escape hatches

Root cause: dev.md and SKILL.md presented the recipe runner as "PREFERRED"
with fallback paths. LLMs treat documented fallbacks as alternatives and
optimize for the simplest one, bypassing the 23-step workflow.

Changes:
- dev.md: Remove Options B/C. Single REQUIRED path. Add anti-bypass statement.
- SKILL.md: Remove FALLBACK section and availability check. Single REQUIRED path.
- USER_PREFERENCES.md: Added learned pattern (outside repo, persists via plugin).

7 escape hatches closed: "PREFERRED" → "REQUIRED", Options B/C removed,
FALLBACK section removed, availability check removed.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* [skip ci] chore: Auto-bump patch version

---------

Co-authored-by: Ubuntu <azureuser@devo.xh24nwhiyviedbtbx54dafh01e.dx.internal.cloudapp.net>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
…ix) (rysweet#2752)

* fix: add mode and working_dir params to ClaudeSDKAdapter.execute_agent_step

The recipe runner passes mode=step.mode and working_dir to all adapters
via the SDKAdapter protocol. ClaudeSDKAdapter was the only adapter
missing these parameters, causing TypeError when the smart-orchestrator
recipe ran.

Added:
- mode: str | None = None parameter (accepted but unused by SDK)
- working_dir: str = "." parameter (accepted but unused by SDK)
- 2 new tests: mode/working_dir acceptance + protocol signature match
- Outside-in verified: recipe runner no longer fails on mode TypeError

7/7 adapter tests passing.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* [skip ci] chore: Auto-bump patch version

---------

Co-authored-by: Ubuntu <azureuser@amplihack-dev.ftnmxvem3frujn3lepas045p5c.xx.internal.cloudapp.net>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* feat: PostToolUse hook-based workflow enforcement guard (rysweet#2742)

Add a PostToolUse hook that detects when /dev or dev-orchestrator is invoked
but the recipe runner is never executed, and surfaces a hard WARNING after
3 tool calls without workflow evidence.

Changes:
- New workflow_enforcement_hook.py: Tracks /dev invocation state in
  /tmp/amplihack-workflow-state/, monitors for recipe runner calls,
  branch creation, TodoWrite Step patterns, and Agent launches as
  evidence of real workflow execution
- Updated post_tool_use.py: Registers the new hook via tool_registry
- Updated SKILL.md: Stronger enforcement language that's harder for
  Claude to rationalize away, documents the PostToolUse guard

Closes rysweet#2742

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* [skip ci] chore: Auto-bump patch version

* fix: add missing skill names + evidence patterns to workflow enforcement hook

Add .claude:amplihack:dev and .claude:amplihack:default-workflow to
DEV_SKILL_NAMES. Add TaskCreate as workflow evidence tool. Add
gh pr create and gh issue create to bash evidence patterns.

10/10 outside-in test scenarios now pass:
- 5 bypass detection scenarios (all fire warnings correctly)
- 5 happy-path scenarios (all detect evidence correctly)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: detect /dev at UserPromptSubmit level for Copilot workflow enforcement

Closes Copilot-specific escape hatch where /dev is treated as prose.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: use fixed session ID for cross-hook state sharing in Copilot

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: move /dev detection before strategy short-circuit

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: read prompt from both userMessage (Claude) and prompt (Copilot) keys

Copilot CLI passes the user prompt in input_data["prompt"], while
Claude Code uses input_data["userMessage"]. Now checks both.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: Copilot prompt key in classification reminder + formatting

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Ubuntu <azureuser@devo.xh24nwhiyviedbtbx54dafh01e.dx.internal.cloudapp.net>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
… CLI docs (rysweet#2757)

* fix: ClaudeSDKAdapter missing mode/working_dir params + README recipe CLI docs

ClaudeSDKAdapter.execute_agent_step() was missing `mode` and `working_dir`
parameters that the SDKAdapter protocol and all other adapters define.
The RecipeRunner unconditionally passes these kwargs, causing a TypeError
that made the SDK adapter completely unusable.

Also adds `amplihack recipe` CLI examples to the README's Orchestration &
Execution feature section so users can discover the recipe CLI commands.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* [skip ci] chore: Auto-bump patch version

---------

Co-authored-by: Ubuntu <azureuser@devy.yb0a3bvkdghunmsjr4s3fnfhra.phxx.internal.cloudapp.net>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
… issues (rysweet#2609)

* Initial plan

* fix: prevent Issue Classifier cascade failures on [agentics] tracking issues

- Add 'Skip automated tracking issues' step to pre_activation job that
  prevents activation for [agentics]-prefixed issues (failure notices,
  no-op tracking). These automated issues were causing cascade failures
  where each failure notice triggered more classifier runs that also failed.

- Update issue-classifier.md to instruct the agent to always apply a
  label (never use noop in strict mode), with explanation of why noop
  causes CLI failures.

Root cause: When the Issue Classifier failed on a real issue, the
agentics system created a '[agentics] Issue Classifier failed' failure
notice. This notice triggered the classifier again, which failed again,
creating 9+ cascading failures. The pre_activation filter stops this
cycle at the source.

Co-authored-by: rysweet <18054722+rysweet@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: rysweet <18054722+rysweet@users.noreply.github.com>
* fix: add missing installed_at to copilot plugin config (rysweet#2751)

Copilot CLI validates config.json with a strict schema requiring
installed_at as a string on each installed_plugins entry. The
register_copilot_plugin() function was missing this field, causing
schema validation to fail and breaking the copilot CLI globally.

Added installed_at with UTC ISO 8601 timestamp and 2 new tests.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* [skip ci] chore: Auto-bump patch version

---------

Co-authored-by: Ubuntu <azureuser@devy.yb0a3bvkdghunmsjr4s3fnfhra.phxx.internal.cloudapp.net>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
…sion race (rysweet#2758)

* fix: use temp dir for recipe runner agent steps to prevent nested session race (rysweet#2758)

The CLISubprocessAdapter was running child `claude -p` processes in the
same working directory as the parent session, causing file write races on
sessions.jsonl, settings.json, and Blarify indexing.

Changes:
- Agent steps now use tempfile.mkdtemp(prefix="recipe-agent-") as cwd,
  matching the multitask orchestrator's isolation pattern.
- New _build_child_env() helper removes CLAUDECODE and propagates session
  tree env vars (AMPLIHACK_TREE_ID, AMPLIHACK_SESSION_DEPTH, etc.) with
  depth incremented by 1.
- Temp directories are always cleaned up via shutil.rmtree in a finally block.
- Bash steps also get session tree env propagation via the shared helper.

Closes rysweet#2758

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* [skip ci] chore: Auto-bump patch version

---------

Co-authored-by: Ubuntu <azureuser@devy.yb0a3bvkdghunmsjr4s3fnfhra.phxx.internal.cloudapp.net>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
…rysweet#2762)

* fix: deduplicate USER_PREFERENCES.md from 5 copies to 2 canonical sources

Problem: USER_PREFERENCES.md existed in 5 places, all drifting apart:
- .claude/context/ (canonical for Claude Code)
- amplifier-bundle/context/ (canonical for Amplifier)
- src/amplihack/.claude/context/ (build artifact - should not be tracked)
- src/amplihack/amplifier-bundle/context/ (build artifact - should not be tracked)
- docs/claude/context/ (dead copy - nothing reads it)

Fix:
- Trim both canonical copies from ~280 lines to ~40 (remove documentation
  bloat that belongs in /amplihack:customize help, not in context injection)
- Remove 3 duplicate copies from git tracking
- Add .gitignore entries for src/amplihack/ build artifact directories
  (build_hooks.py copies these at wheel build time and cleans up after)
- Also removes accidentally tracked DISCOVERIES.md build artifacts
- Fix PROJECT.md project name (amplihack5 -> amplihack)

The build still works: verified wheel contains both USER_PREFERENCES.md
files at correct paths (amplihack/.claude/context/ and
amplihack/amplifier-bundle/context/).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: remove 106 stale build artifacts from git tracking

build_hooks.py copies agents/, commands/, skills/ from .claude/ to
src/amplihack/ at wheel build time, then cleans up after. These files
were accidentally committed, preventing cleanup (safe_cleanup skips
git-tracked files) and creating 151 uncommitted changes on every build.

- Remove 104 tracked files from src/amplihack/agents/ (stale domain_agents, goal_seeking, teaching)
- Remove 2 tracked files from src/amplihack/commands/ (stale recipe.md, uvx_helper.py)
- Remove .amplihack/kuzu_db from tracking (binary DB, already in .gitignore)
- Add .gitignore entries for all build artifact directories

After this change, `uv build --wheel` properly cleans up all copied
directories instead of skipping tracked files.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* [skip ci] chore: Auto-bump patch version

---------

Co-authored-by: Ubuntu <azureuser@devo.xh24nwhiyviedbtbx54dafh01e.dx.internal.cloudapp.net>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
…t#2766)

* fix: recipe bash steps use printf pattern to prevent quoting breakage (rysweet#2764)

render_shell() wraps template values in shlex.quote() (single quotes),
which breaks when placed inside double-quoted echo or heredoc strings.

Fix: All bash steps now use printf '%s' where the shlex-quoted value
is a standalone argument:
- Display: printf 'Text: %s\n' {{var}}
- Assign: VAR=$(printf '%s' {{var}})
- CLI args: capture to variable first, use "$VAR"

Fixed 7 steps in default-workflow.yaml, 5+ steps in smart-orchestrator.yaml.
Added 4 regression tests for quoting patterns.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* [skip ci] chore: Auto-bump patch version

---------

Co-authored-by: Ubuntu <azureuser@devo.xh24nwhiyviedbtbx54dafh01e.dx.internal.cloudapp.net>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
…o-install (rysweet#2771)

fix: target running interpreter in ensure_sdk_deps() for uvx compatibility

Closes rysweet#2773
* fix: ensure /dev reliably invokes dev-orchestrator recipe runner

Three root causes prevented /dev from reliably routing to the
smart-orchestrator recipe runner:

1. Project settings.json was missing UserPromptSubmit hooks entirely,
   so the classification reminder and preference injection only fired
   from user-level config (if present).

2. When /dev was explicitly typed, the workflow_classification_reminder
   hook injected "invoke Skill(dev-orchestrator)" which competed with
   the command's own "run recipe runner directly" instructions,
   confusing the model with two different execution paths.

3. The /dev command buried execution instructions at line 143 of 182,
   after 140 lines of documentation. The model would lose focus before
   reaching the critical action.

Fixes:
- Add UserPromptSubmit hooks to project .claude/settings.json
- Sync hooks to UVX template via scripts/sync_hooks.py
- Skip classification reminder when /dev is explicitly invoked
- Restructure dev.md: execution instructions first, reference last

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* [skip ci] chore: Auto-bump patch version

* fix: make /dev a thin alias to dev-orchestrator skill

Simplifies /dev from a 182-line document with duplicated recipe runner
logic to a thin 51-line alias that invokes Skill(skill="dev-orchestrator").

Previously /dev duplicated the recipe runner execution code that already
exists in the dev-orchestrator skill. Now there's a single source of
truth: the skill defines execution, the command is just an entry point.

Also ensures UserPromptSubmit hooks are in the UVX template (the actual
source of truth for hook assembly at startup), not just project settings.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* [skip ci] chore: Auto-bump patch version

* refactor: simplify /dev command to minimal alias (10 lines)

Ruthless simplicity: frontmatter + one line of instruction.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* [skip ci] chore: Auto-bump patch version

---------

Co-authored-by: Ubuntu <azureuser@devo.xh24nwhiyviedbtbx54dafh01e.dx.internal.cloudapp.net>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Fixes rysweet#2785 - Add guidance on interpreting test results for first-time contributors:
- Added expected success output example
- Added failure output explanation
- Documented common failure causes (env vars, dependencies)
- Added debugging tips and expected runtime
Adds a reading guide section before the Table of Contents that provides
suggested paths for different user types:
- New users: Quick Start -> Core Concepts -> Configuration
- Contributors: Development -> CONTRIBUTING.md
- Advanced users: Feature Catalog -> Documentation Navigator

This addresses issue rysweet#2786 by helping beginners navigate the documentation
more effectively.
- Added quick reference for Wabi-sabi, Zen-like minimalism, Occam's Razor
- Explained Brick Philosophy terms: Brick, Stud, Regeneratable, Isolated
- Clarified Vertical Slices and Iterative Implementation
- Addresses issue: PHILOSOPHY.md uses unexplained philosophy concepts
- Added prerequisites note at top of README
- Added Resources for Beginners section with links to learning materials
- Addresses issue: Missing prerequisites statement

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates top-level documentation to better onboard new contributors by adding prerequisites guidance and beginner-friendly references.

Changes:

  • Added a prerequisites callout and a “Reading Guide” section to README.md.
  • Added a “Resources for Beginners” section with external learning links to README.md.
  • Expanded CONTRIBUTING.md with guidance on interpreting pytest output and common failure causes; added quick-reference glossaries to .claude/context/PHILOSOPHY.md.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 5 comments.

File Description
README.md Adds onboarding guidance (prerequisites, reading guide, beginner resources) near the top of the project docs.
CONTRIBUTING.md Adds a new section explaining test output and troubleshooting common test failures.
.claude/context/PHILOSOPHY.md Adds short glossaries/term explanations to make philosophy docs more accessible to newcomers.
Comments suppressed due to low confidence (1)

README.md:45

  • The Table of Contents doesn’t include the newly added “Reading Guide” / “Resources for Beginners” sections, making navigation inconsistent with the rest of the README’s TOC-driven structure. Add TOC entries (or intentionally keep them out, but then consider removing the TOC expectation by moving these sections under an existing TOC item).
## 📖 Reading Guide

**New to amplihack?** Start with [Quick Start](#quick-start), then [Core Concepts](#core-concepts), then [Configuration](#configuration).

**Want to contribute?** Go to [Development](#development) and [CONTRIBUTING.md](CONTRIBUTING.md).

**Already familiar?** Check out [Feature Catalog](#feature-catalog) and [Documentation Navigator](#documentation-navigator).

---

## Table of Contents

- [Why amplihack?](#why-amplihack)
- [Quick Start](#quick-start)
- [Core Concepts](#core-concepts)
- [Feature Catalog](#feature-catalog)
- [Configuration](#configuration)
- [Documentation Navigator](#documentation-navigator)
- [Development](#development)
- [RustyClawd Integration](#rustyclawd-integration)
- [License](#license)

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review. Take the survey.

Comment thread README.md
Comment on lines +23 to +33
---

## 📖 Reading Guide

**New to amplihack?** Start with [Quick Start](#quick-start), then [Core Concepts](#core-concepts), then [Configuration](#configuration).

**Want to contribute?** Go to [Development](#development) and [CONTRIBUTING.md](CONTRIBUTING.md).

**Already familiar?** Check out [Feature Catalog](#feature-catalog) and [Documentation Navigator](#documentation-navigator).

---

Copilot AI Mar 10, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

README.md is now 613 lines, which exceeds the repo’s enforced limit of 600 lines (tests/test_readme_structure.py::test_total_length). To avoid CI failures, consider moving the new beginner resources to a dedicated docs page and linking to it here, or trimming other sections so the README stays within 350–600 lines.

Copilot uses AI. Check for mistakes.
Comment thread CONTRIBUTING.md
Comment on lines +68 to +71
**Debugging tips:**
- Run with `-v` flag for detailed output: `pytest -v`
- Run a single test file to isolate issues: `pytest tests/test_example.py`
- Check the error traceback — it usually points to the exact line failing

Copilot AI Mar 10, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The example pytest tests/test_example.py doesn’t correspond to an existing file in this repo (there is no tests/test_example.py). Using a non-existent path in the debugging tips will confuse contributors; switch to a real test file path (or keep it generic like pytest tests/test_some_feature.py).

Copilot uses AI. Check for mistakes.
Comment thread CONTRIBUTING.md
Comment on lines +47 to +51
**What success looks like:**
```
==================== 237 passed in 45.2s ====================
```
All tests passing means your changes don't break existing functionality.

Copilot AI Mar 10, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The “success” example hardcodes a specific test count/time (237 passed in 45.2s), which will go stale as tests are added/removed and as runtime varies by machine/CI. Consider using placeholders (e.g., X passed) and describing the meaning rather than pinning exact numbers.

Copilot uses AI. Check for mistakes.
Comment on lines +27 to +31
> **Key Terms Explained:**
> - **Brick** = A self-contained module with ONE clear responsibility (like a LEGO brick)
> - **Stud** = The public interface/contract that other modules connect to
> - **Regeneratable** = Can be rebuilt from scratch using AI without breaking the system
> - **Isolated** = All code, tests, and fixtures live inside the module folder

Copilot AI Mar 10, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This “Key Terms Explained” blockquote duplicates the definitions immediately below in the existing “Key concepts” list (Brick/Stud/Regeneratable/Isolated). Keeping both will create drift; consider removing one of the two or making one a brief pointer to the other.

Suggested change
> **Key Terms Explained:**
> - **Brick** = A self-contained module with ONE clear responsibility (like a LEGO brick)
> - **Stud** = The public interface/contract that other modules connect to
> - **Regeneratable** = Can be rebuilt from scratch using AI without breaking the system
> - **Isolated** = All code, tests, and fixtures live inside the module folder
> **Key Terms Explained:** See the **Key concepts** list below for precise definitions of Brick, Stud, Regeneratable, and Isolated.

Copilot uses AI. Check for mistakes.
Comment thread README.md
Comment on lines 47 to +52
## Why amplihack?

## 📚 Resources for Beginners

New to some of these topics? Here are some resources to get you started:

Copilot AI Mar 10, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new “Resources for Beginners” H2 sits immediately after “## Why amplihack?” and before the “The Problem/The Solution” value proposition, which effectively makes the “Why amplihack?” section empty and nests the value proposition under “Resources” instead. This also pushes the “barebones / problem / solution / engineering system” keywords beyond the first 50 lines, likely failing tests/test_readme_structure.py::test_value_proposition_in_first_50_lines. Move Resources later (or make it a subheading under Why after the problem statement) so the value proposition stays near the top.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

docs: Missing prerequisites statement — terminal, git, Python/Node.js knowledge assumed but never stated

6 participants