Commit Graph
140 Commits
Author SHA1 Message Date
Addy Osmani 2bee9b3842 docs(ship): note user-defined personas override plugin versions
Plugin subagents sit at the bottom of Claude Code's scope priority table,
so a code-reviewer (or security-auditor / test-engineer) defined in
.claude/agents/ or ~/.claude/agents/ silently wins over the plugin's
version when /ship spawns personas. This is intentional — user
customization should take precedence — but the override is silent, so
without documenting it people will waste time wondering why /ship isn't
using the persona they expected.

Adds a one-liner to Phase A framing this as a feature. Suggested in
review.
2026-04-19 20:35:41 -07:00
Addy Osmani de62bb9e32 refactor(ship): replace hand-wavy skip-fan-out rule with concrete thresholds
The previous rule — 'if the change is small enough that fan-out adds more
overhead than value (e.g. a single typo fix)' — left too much room for
subjective interpretation. A 10-line change to auth code is risky
regardless of line count; a 500-line test-file rename is not.

New rule combines size thresholds (2 files, 50 lines) with a
sensitive-path carve-out (auth, payments, data access, config/env). All
conditions must be true to skip; any one makes fan-out the default.
Suggested in review.
2026-04-19 20:34:51 -07:00
Addy Osmani 0bf7398e0d docs(references): note skills/mcpServers frontmatter dropped as teammate
The previous text implied personas behave identically as subagents and
teammates. Per the Agent Teams docs, the skills and mcpServers
frontmatter fields in a subagent definition are not applied when the
definition runs as a teammate — teammates load those from project and
user settings instead.

Adds a qualifier so persona authors don't assume a skills: [...] block
will load in both modes. Flagged in review.
2026-04-19 20:34:06 -07:00
Addy Osmani 93dd9b4602 docs: correct Agent Teams system-prompt handling (appended, not replaced)
Per the Agent Teams docs, a persona body is appended to the teammate's
system prompt as additional instructions — not a replacement. The prior
wording implied the persona owned the whole prompt, which would mislead
a persona author about what coordination instructions they inherit from
the lead (SendMessage, task-list tools, etc.).

Fixes the same inaccuracy in two locations (agents/README.md and
references/orchestration-patterns.md). Flagged in review.
2026-04-19 20:33:53 -07:00
Addy Osmani 78039be06e docs(references): add Agent Teams worked example for competing-hypothesis debugging
Walk through a realistic scenario (intermittent 30-second checkout hang
with four plausible root causes) where Agent Teams beats /ship's subagent
fan-out: teammates can challenge each other's hypotheses directly via
inter-teammate messaging, which subagents cannot do.

Includes the one-time CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 setup, a
copy-paste trigger prompt that reuses the existing personas as teammate
types, an explicit anti-pattern warning against wrapping the workflow as
a /debug slash command (which would lose the inter-teammate messaging),
and a 'when not to use Agent Teams' decision rule.
2026-04-18 23:33:04 -07:00
Addy Osmani d01ec538db docs: document Claude Code subagent and Agent Teams compatibility
Verify the orchestration design against the official Claude Code docs and
make the platform mapping explicit:

- /ship now names the Agent tool and the subagent_type field directly,
  with a fallback note for harnesses that lack an Agent tool.
- AGENTS.md notes that personas work as both subagents and Agent Teams
  teammates, and lists the unsupported plugin frontmatter fields.
- agents/README.md gains a Claude Code interop section and notes that
  rule #2 is also a hard platform constraint.
- references/orchestration-patterns.md gains a Claude Code compatibility
  appendix covering plugin paths, the subagents-vs-teams comparison, the
  built-in Explore/Plan/general-purpose subagents, and the parallel
  Agent tool call requirement. Pattern 5 now points at Explore first.

No behavior changes; documentation only.
2026-04-18 23:32:17 -07:00
Addy Osmani f091d49cb3 docs(references): add orchestration patterns catalog
Catalog the five endorsed patterns (direct invocation, single-persona
slash command, parallel fan-out with merge, user-driven sequential
pipeline, research isolation) and four anti-patterns (router persona,
persona-calls-persona, sequential paraphrasing orchestrator, deep
persona trees). Includes a decision flow and a gate for when to add
new patterns to the catalog.
2026-04-18 23:30:35 -07:00
Addy Osmani bc7f9e88d3 docs(agents): add Composition block to each persona
Each persona now ends with a three-bullet block stating when to invoke it
directly, which slash commands wrap it, and the rule that personas do not
invoke other personas. Keeps the persona honest about its place in the
workflow without re-stating the broader orchestration model.
2026-04-18 23:29:36 -07:00
Addy Osmani 9b1393ac4c refactor(ship): turn /ship into a parallel fan-out orchestrator
Replace the linear pre-launch checklist with a three-phase orchestrator:
Phase A spawns code-reviewer, security-auditor, and test-engineer in
parallel; Phase B merges their reports in the main context; Phase C
produces a go/no-go decision with a mandatory rollback plan.

This is the canonical example of valid multi-persona orchestration in the
repo. Trivial edits should still skip fan-out per the rules block.
2026-04-18 23:29:13 -07:00
Addy Osmani 69431ad839 docs(agents): add Orchestration section to AGENTS.md
Document the three composable layers (skills, personas, slash commands),
the rule that personas do not invoke other personas, and that parallel
fan-out via /ship is the only multi-persona pattern this repo endorses.
Points contributors at agents/README.md and references/orchestration-patterns.md
for the full guidance.
2026-04-18 23:22:35 -07:00
Addy Osmani 71c89ad6b4 docs(agents): add personas index with composition decision matrix
New agents/README.md introduces the three-layer model (skill / persona /
command), a decision matrix for picking the right invocation style, and
worked examples of both valid (parallel fan-out via /ship) and invalid
(router persona) orchestration. Establishes the rule that personas do not
invoke other personas.
2026-04-18 23:22:17 -07:00
Addy OsmaniandGitHub 44dac80216 Merge pull request #80 from federicobartoli/feat/sdd-cache-hooks
feat(hooks): opt-in citation cache for source-driven-development
2026-04-18 22:18:38 -07:00
Addy OsmaniandGitHub d510b0b358 Merge pull request #84 from nucliweb/feat/inp-checklist-improvements
docs: expand INP coverage in performance checklist
2026-04-18 13:46:54 -07:00
Joan Leon b0deb8637e docs: expand INP coverage in performance checklist
Add an INP-specific measurement workflow covering field data via CrUX Vis,
DevTools interaction tracing, and mid-range Android device testing. Extend
the web-vitals snippet with the attribution build to surface inputDelay,
processingDuration, and presentationDelay. Add a checklist item for
deferring non-critical work out of event handlers to avoid delaying
interaction response.
2026-04-18 10:42:45 +02:00
Federico Bartoli 4743df93b7 refactor(hooks): address review feedback on sdd-cache
Drop the 24h TTL: HTTP validators are the whole freshness contract.
Key cache on URL alone; prompt-aware keying with normalization gave
false safety (semantic differences slipped through). Prompt is kept
as metadata and surfaced in the hit message so the next agent can
judge whether the earlier reading applies. Reframe docs around
"HTTP resource cache, not prompt cache".

While here, fix two latent bugs:
- Replace the unquoted heredoc in the pre-hook with printf. The
  heredoc expanded $vars and backticks inside cached content, so a
  compromised doc page could trigger command substitution on cache
  hit.
- Strip CR before awk paragraph-mode parsing of curl -I -L output
  so blank separators between response blocks on a redirect chain
  are recognised (was silently picking intermediate headers).

Remove dead -v IGNORECASE=1 (gawk-only; tolower() already handles it).
2026-04-18 08:49:29 +02:00
Addy OsmaniandGitHub 9534f44c54 Merge pull request #79 from shaun0927/fix/custom-button-space-prevent-default
docs(frontend-ui): prevent page scroll in custom button example
2026-04-16 23:09:31 -07:00
JunghwanNA cea2f381cd Align the custom button example with native Space activation timing
The maintainer confirmed the original preventDefault fix was mergeable, but also pointed out that the example could better mirror native button behavior. This follow-up keeps the docs-only scope while making the example clearer: Enter stays on keydown, Space only suppresses default scrolling on keydown, and activation happens on keyup.

Constraint: Keep the change limited to the existing accessibility example in the frontend UI skill
Rejected: Leave the first patch as-is and wait | low-cost maintainer suggestion that improves behavioral fidelity
Confidence: high
Scope-risk: narrow
Reversibility: clean
Directive: For custom role=button examples, document Space activation in a way that does not reintroduce page scrolling or drift from native button timing without explanation
Tested: git diff --check; manual browser/WKWebView reasoning against the example semantics
Not-tested: Cross-browser live rerun after the keyup refinement
2026-04-17 13:58:43 +09:00
Federico Bartoli 9a429d0574 feat(hooks): opt-in citation cache for source-driven-development
Adds a pair of optional Claude Code hooks that cache WebFetch output
on disk but revalidate every reuse against the origin. Content is
served only when the server returns 304 Not Modified, so
source-driven-development's "verify against current docs" guarantee
still holds across sessions.

- hooks/sdd-cache-pre.sh: PreToolUse hook. For a cached entry, issues
  a HEAD with If-None-Match / If-Modified-Since. On 304, blocks the
  WebFetch (exit 2) and returns cached content via stderr; otherwise
  allows the fetch through.
- hooks/sdd-cache-post.sh: PostToolUse hook. Captures response plus
  current ETag / Last-Modified. Entries without a validator are
  never stored — without one, the pre hook cannot verify freshness
  and caching would amount to trusting memory.
- Cache key: sha256(url + normalized_prompt). Prompt is lowercased
  and whitespace-collapsed so stylistic variants hit the same entry;
  semantically different prompts still miss.
- Hard 24h TTL as a safety net against misbehaving origins.
- hooks/SDD-CACHE.md: opt-in setup, end-to-end testing, debugging.
- .gitignore: ignore the .claude/sdd-cache/ directory.

Hooks are opt-in: users register them in .claude/settings.json. The
source-driven-development skill itself is unchanged.
2026-04-16 19:34:38 +02:00
JunghwanNA 0feb09ae61 Prevent the custom button example from teaching a scrolling interaction bug
The frontend accessibility skill is meant to model production-grade,
WCAG-aligned UI guidance. The existing custom button example activates
on Space, but it also leaves the browser's default Space scroll in
place on a non-native button. This update keeps the example small while
making the keyboard behavior accurate.

Constraint: Keep the PR docs-only and scoped to the validated example
Rejected: Add more explanatory prose around custom button semantics | wider docs change than needed for a one-line guidance fix
Confidence: high
Scope-risk: narrow
Reversibility: clean
Directive: Keep this example aligned with actual browser behavior for non-native buttons; avoid simplifying away required keyboard handling details
Tested: Local WKWebView/browser reproduction; git diff --check
Not-tested: Other browsers beyond the local WebKit-based reproduction
Related: #78
2026-04-16 17:17:22 +09:00
Addy OsmaniandGitHub 7338cf0a5a Merge pull request #76 from MarkADom/docs/align-skill-guidance
docs: align skill contribution guidance
2026-04-15 20:05:33 -07:00
marco.domingues b431fa3e6c docs: apply maintainer feedback
# Conflicts:
#	README.md
2026-04-14 22:05:01 +01:00
Marco DominguesandGitHub 4adf67307e Fix formatting in README.md 2026-04-14 20:47:24 +01:00
marco.domingues 04de0c39a5 docs: preserve third-person description guidance 2026-04-14 20:43:48 +01:00
marco.domingues 79134c5af9 docs: align skill contribution guidance 2026-04-14 16:52:30 +01:00
Addy OsmaniandGitHub bf2fa69944 Merge pull request #58 from yaphi1/fix-button-accessibility-guidance
Fix button accessibility guidance in frontend-ui-engineering skill
2026-04-11 18:26:16 -07:00
Addy OsmaniandGitHub c8e426a9c8 Merge pull request #54 from BogdanCerovac/keyboard-skip-to-content-visible
Update accessibility checklist for skip-to-content link
2026-04-11 18:24:58 -07:00
Addy OsmaniandGitHub 4503f4024b Merge pull request #55 from BogdanCerovac/a11y-forms-autocomplete
Add autocomplete requirement for known fields
2026-04-11 18:23:29 -07:00
Addy OsmaniandGitHub 931310f434 Merge pull request #63 from nucliweb/improve/performance-checklist
Expand performance checklist: fonts section and yieldToMain pattern
2026-04-11 14:36:02 -07:00
Joan Leon 3d55f997e8 Expand performance checklist with fonts section and yieldToMain pattern
- Add Fonts subsection with 9 actionable checks covering family/weight
  limits, WOFF2 format, self-hosting, LCP font preload, font-display,
  unicode-range subsetting, variable fonts, fallback metric overrides
  (size-adjust, ascent-override, descent-override), and system font stack
- Remove font bullets from CSS section (now live in Fonts)
- Add long task / yielding items to JavaScript: yieldToMain pattern,
  scheduler.yield() / isInputPending() / postTask(), requestIdleCallback,
  and third-party script guidance
- Add fetchpriority check for non-image resources under Network
- Add content-visibility: auto and bfcache checks under Rendering
- Update "Blocking main thread" anti-pattern to reference scheduler.yield() / yieldToMain
- Fix TOC: add missing TTFB Diagnosis entry
2026-04-11 14:21:06 +02:00
Yaphi Berhanu 0bc1f6115a Fix button accessibility guidance in frontend-ui-engineering skill 2026-04-10 22:35:25 -04:00
Addy OsmaniandGitHub 82ceff41ed Merge pull request #56 from Keerthi-Sreenivas/main
Updated readMe with Kiro docs
2026-04-10 17:15:51 -07:00
Keerthi SreenivasandGitHub 6f712769e6 Update link formatting for Kiro documentation 2026-04-10 15:12:34 -07:00
Keerthi SreenivasandGitHub da1be712ab Update README with Kiro details
Added details about Kiro IDE & CLI and Codex/Other Agents.
2026-04-10 15:11:42 -07:00
Keerthi SreenivasandGitHub fc0da53ad8 Merge pull request #1 from Keerthi-Sreenivas/Keerthi-Sreenivas-readme-update
Update README with Kiro IDE and CLI information
2026-04-10 15:10:49 -07:00
Keerthi SreenivasandGitHub 2a3a5160fa Update README with Kiro IDE and CLI information
Added details about Kiro IDE and CLI skills.
2026-04-10 15:09:09 -07:00
Bogdan CerovacandGitHub da0479581b Add autocomplete requirement for known fields
Added checklist item for using autocomplete in known fields.
2026-04-10 23:13:16 +02:00
Bogdan CerovacandGitHub af1f09634a Update accessibility checklist for skip-to-content link
Clarified the requirement for the skip-to-content link to be visible on keyboard focus - as it is mostly beneficial to users that can see the screen (but also others)
2026-04-10 23:07:48 +02:00
Addy OsmaniandGitHub b3e9059874 Merge pull request #45 from federicobartoli/feat/source-driven-development
feat: source-driven-development skill
0.5.0
2026-04-08 22:58:37 -07:00
Federico Bartoli 45e246094f address review feedback
- Reframe 'When NOT to use' around version-dependent correctness
- Add guidance for conflicting official sources
- Prefer deep links with anchors in citation examples and rules
2026-04-09 07:09:52 +02:00
Addy OsmaniandGitHub 07b7239259 Merge pull request #40 from nucliweb/improve/performance-skill
Improve performance-optimization skill with clearer guidance
2026-04-08 15:29:16 -07:00
Addy OsmaniandGitHub eec70e0776 Merge pull request #43 from nucliweb/docs/enhance-gemini-cli-guide
docs: enhance Gemini CLI setup and advanced usage guide
2026-04-08 15:25:29 -07:00
Federico Bartoli bbd62a8484 feat: add source-driven-development skill
Grounds every framework-specific implementation decision in official
documentation — verify, cite sources, and surface what's unverified.
Covers the full process from stack detection to citation format,
with a framework-agnostic design and optional documentation cache.
2026-04-08 21:09:40 +02:00
Joan Leon 22df069c40 docs(perf): update image best practices and TTFB thresholds based on feedback
- Add width/height to <source> elements for correct aspect-ratio in art direction.
- Use realistic 'sizes' attributes in hero image examples.
- Remove 'decoding=sync' from hero images to avoid blocking the main thread.
- Align TTFB 'good' threshold with web.dev standards (800ms).
2026-04-08 11:24:16 +02:00
Joan Leon bcbca01cb4 docs: improve Gemini CLI documentation and configuration guide 2026-04-08 10:44:54 +02:00
Joan Leon 7a9887cedb Refine performance-optimization skill and checklist based on feedback
- Optimize Hero/LCP images: use aspect-ratio, fetchpriority="high", and decoding="sync".
- Optimize below-the-fold images: add decoding="async" alongside loading="lazy".
- Update tree-shaking advice: clarify ESM and sideEffects: false requirements.
- Add Suspense wrapper to code-splitting examples for completeness.
- Ensure image checks include both dimensions and aspect-ratio as non-exclusive.
2026-04-08 08:37:26 +02:00
Addy OsmaniandGitHub 610f2637f3 Merge pull request #42 from zerone0x/fix/spec-task-artifacts-39
docs: clarify spec and task file lifecycle
2026-04-07 23:15:42 -07:00
Addy OsmaniandGitHub 366d96e70a Merge pull request #33 from bonigarcia/main
Add OpenCode integration with agent-driven skill execution
2026-04-07 23:13:20 -07:00
Addy OsmaniandGitHub 017caca7fa Merge pull request #37 from federicobartoli/docs/troubleshoot-ssh-install
Add SSH troubleshooting hint to marketplace install
2026-04-07 22:56:33 -07:00
ClawdbotandClaude a379b819de docs: clarify spec and task file lifecycle
Fixes #39

Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-08 04:36:12 +02:00
Joan Leon c2c4f56d05 Improve performance-optimization skill with clearer guidance
- Distinguish synthetic (Lighthouse) vs RUM (web-vitals) measurement approaches,
  clarifying when each is appropriate: synthetic for CI regression detection,
  RUM to validate real user impact.

- Expand TTFB diagnosis from a single vague hint into a decision tree that breaks
  down each component (DNS, TCP/TLS, server processing) with specific next steps.
  Mirrors the tree in the skill and adds a dedicated checklist section.

- Fix image optimization example: the previous "GOOD" example applied loading="lazy"
  without distinguishing the LCP hero image from below-the-fold images. Hero images
  must never be lazy-loaded. New example separates both cases explicitly.

- Add art direction + resolution switching to the hero image example using <picture>
  with media queries for mobile/desktop crops and srcset for density variants.
  Mobile-first: <img src> fallback points to the mobile version.
  Covers AVIF → WebP → JPG format cascade and fetchpriority="high" for LCP.

- Correct the date-fns tree-shaking example: modern bundlers (Vite, webpack 5+)
  handle named imports automatically. The "BAD" pattern was not actually bad,
  and following it could lead to unnecessary micro-optimizations. Real gains
  come from dynamic imports and route-level code splitting, which the example
  now illustrates instead.
2026-04-08 00:25:19 +02:00