206 Commits
Author SHA1 Message Date
Addy Osmani cad41cb506 docs(security): complete the OWASP LLM Top 10 quick-reference table
Per federicobartoli's note on #219: the table was headed "Top 10" but
listed only 8. Add the two missing entries (LLM04 Data and Model Poisoning,
LLM09 Misinformation) so the heading matches the contents.
2026-06-07 15:26:33 -07:00
Addy Osmani d1983929db fix(security): address review on #219
Per nucliweb's review:
- Resolve OWASP numbering inconsistency: rename the prevention section to
  "OWASP Top 10 Prevention Patterns" and drop the per-item numbers so it no
  longer implies a ranking that conflicts with the 2021 quick-reference table.
- Harden the SSRF example against DNS rebinding/TOCTOU: resolve all records
  and reject if any is non-unicast, plus a caveat that fetch re-resolves and
  pointers to request-filtering-agent / ssrf-req-filter for high-risk surfaces.
- Add LLM08 (Vector and Embedding Weaknesses) to the LLM section and the
  reference table, covering per-tenant embedding isolation and poisoned docs.
- Promote "Threat Model First" to a "## Process" header per the repo's skill
  anatomy convention.
- Make the LLM "GOOD" example parse defensively (JSON.parse + schema in a
  try/catch) so it models handling untrusted output end to end.
2026-06-07 11:36:31 -07:00
Addy Osmani e1343ce71f feat(security-auditor): add AI/LLM review scope and threat-model framing
- New "AI / LLM Features" review scope mapped to the OWASP LLM Top 10
- SSRF question added to third-party integrations
- Rules updated to start from trust boundaries (STRIDE) and to check the
  LLM Top 10 and supply-chain risk
2026-06-05 21:57:15 -07:00
Addy Osmani b7add8c945 docs(security): mirror new coverage into the security checklist
- Threat Modeling "start here" block (trust boundaries, STRIDE, abuse cases)
- SSRF line under Input Validation
- Supply-chain hygiene items under Dependency Security
- AI / LLM Security section + OWASP Top 10 for LLMs quick reference table
2026-06-05 21:57:15 -07:00
Addy Osmani db7015d261 feat(security): add threat modeling, SSRF, supply-chain, and LLM security
Strengthen the security-and-hardening skill with the highest-value gaps
without changing its secure-coding-for-builders scope:

- Threat Model First: a STRIDE/trust-boundary process step up front, so the
  skill drives proactive design (OWASP A04) instead of only listing controls
- SSRF prevention (§7): allowlist + private-IP-block pattern; the one OWASP
  Top 10 item previously listed but never exemplified
- Supply-chain hygiene: lockfile/npm ci, postinstall and typosquat risks (A06)
- Securing AI/LLM features: prompt injection, untrusted model output, secrets
  in prompts, excessive agency, unbounded consumption (OWASP LLM Top 10 2025)
- Secret-leak response: rotate, don't just rewrite history
- Threaded the new areas into the review checklist, rationalizations,
  red flags, and verification

Skill grows 349 -> 448 lines (+28%). Validator passes.
2026-06-05 21:57:15 -07:00
Addy OsmaniandGitHub 6ce029897d Merge pull request #186 from superShen0916/fix/meta-skill-routing
docs: route all lifecycle skills from meta-skill
2026-05-27 23:47:30 -07:00
Addy OsmaniandGitHub 2a62238edd Merge pull request #183 from creazyfrog/docs/fix-copilot-agent-file-naming
docs(copilot): fix agent file naming — use *.agent.md extension
2026-05-24 14:03:14 -07:00
Addy OsmaniandGitHub 63a4e1188a Merge pull request #163 from git-clone-abhinav/fix/marketplace-source-relative-path
fix(marketplace): use relative path source to bypass install bug
2026-05-24 13:58:20 -07:00
Addy OsmaniandGitHub 250ffaa6e8 Merge pull request #189 from felixlogotel/fix/drop-pinning-version-field
fix(#145): drop pinning version field from plugin.json
0.6.1
2026-05-22 21:39:34 -07:00
Addy OsmaniandGitHub 539a785747 Merge pull request #187 from danielart/feat/interview-me-confidence-reason
feat(interview-me): add reason to low-confidence numbers
2026-05-21 23:04:13 -07:00
felixlogotelandClaude Opus 4.7 f3f8ed8352 fix(#145): drop pinning version field from plugin.json
The hard-coded `"version": "1.0.0"` in .claude-plugin/plugin.json
pins every install at the snapshot taken when that string was first
set. Per the Claude Code marketplace docs:

> Setting `version` pins the plugin. If `plugin.json` declares
> `"version": "1.0.0"`, pushing new commits without changing that
> string does nothing for existing users, because Claude Code sees
> the same version and keeps the cached copy. Bump the field on
> every release, or omit it to use the commit SHA.
> https://code.claude.com/docs/en/plugin-marketplaces#version-resolution-and-release-channels

Two consequences observed in practice:

1. Users who ran `/plugin install agent-skills@addy-agent-skills`
   weeks ago do not receive the 37 commits landed on main since
   the 0.6.0 release (including the new `doubt-driven-development`
   and `interview-me` skills, plus several frontmatter and
   cross-reference fixes). `claude plugin update` reports no
   change because the cached and remote `version` strings match.
2. The release tags `0.5.0` and `0.6.0` have shipped with no
   corresponding bump in `plugin.json`, so the existing release
   cadence already does not feed Claude Code's update mechanism.

Dropping the `version` field switches the plugin to commit-SHA
versioning, which the same docs explicitly recommend:

> If you omit `version` and host this marketplace in git, every
> commit automatically counts as a new version. This is the
> simplest setup for internal or actively-developed plugins.

Given the repo's commit cadence (37 commits / ~3 weeks between
0.6.0 and HEAD) and its content profile (mostly markdown SKILL.md
files with low per-commit breakage risk), commit-SHA versioning
fits this project better than manual semver bumps. Git tags and
GitHub Releases remain available as editorial milestones for
changelog and announcements; they just no longer need to drive
the update mechanism.

Closes #145.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-21 14:08:12 +02:00
Daniel ARTOLAandClaude Sonnet 4.6 c4ad44928c feat(interview-me): add reason to low-confidence numbers
A bare confidence percentage gives no signal about what's blocking clarity.
When confidence is below ~70%, the skill now requires a one-line reason on
the same CONFIDENCE line so the user knows exactly what the interview still
needs to surface.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 20:39:35 +02:00
superShen0916 6c0e9103ee docs: route all lifecycle skills from meta-skill
Signed-off-by: superShen0916 <superShen0916@users.noreply.github.com>
2026-05-20 10:50:34 +08:00
Trivenzaa-AdminandClaude Sonnet 4.6 9cd2ce16e7 docs(copilot): fix agent file naming — use *.agent.md extension
GitHub Copilot requires custom agent files to be named *.agent.md.
The previous instructions copied them as *.md, which Copilot silently
ignores, so agents would never be available in Copilot Chat.

Changes:
- Rename all three cp commands to use the .agent.md suffix
- Add mkdir -p .github/agents (was missing, cp would have failed)
- Add a callout block explaining the naming requirement with a link
  to the VS Code custom agents docs
- Update section heading from "(agents.md)" to "(*.agent.md)"

Fixes #179

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 01:35:58 -07:00
Addy OsmaniandGitHub f17c6e88c9 Merge pull request #60 from googlarz/feat/ci-skill-validator
Add CI skill validator
2026-05-16 15:00:25 -07:00
Addy Osmani 5b4c6dade5 Drop ASCII diagram from README 2026-05-13 21:52:06 -07:00
Addy Osmani f7edc6c4c8 Add visual to README 2026-05-13 21:50:55 -07:00
Addy OsmaniandGitHub b116253918 Merge pull request #164 from addyosmani/feat/interview-me-skill
feat: add interview-me skill (during the Define phase)
2026-05-13 21:48:35 -07:00
Addy Osmani 12ae36e0d5 interview-me: address review feedback
- Disambiguate the using-agent-skills flowchart so interview-me and
  idea-refine no longer match the same condition top-to-bottom
  ("Don't know what you want yet?" vs "Have a rough concept, need
  variants?").
- Add "grill me" to interview-me's frontmatter description and the
  When to Use trigger list (it was already mentioned in README).
- Reorder sections: Example and Interaction with Other Skills now
  precede Common Rationalizations and Red Flags, so the persuasive
  example lands before the rationalization table.

Per review by @nucliweb on #164.
2026-05-13 21:47:29 -07:00
Addy OsmaniandGitHub 3b209f4c01 Merge pull request #167 from toby-bridges/fix/issue-75-docs-inconsistency-conflicting-skill-des
fix(#75): Docs inconsistency: conflicting skill description and anatomy guidance
2026-05-13 21:34:52 -07:00
Addy Osmani 6175fdd678 Merge branch 'main' into fix/issue-75-docs-inconsistency-conflicting-skill-des
Resolves conflict in AGENTS.md introduced by #170 (empty scripts/
directory cleanup). Combines #170's '## Usage (Optional)' + scripts/
explanation with this PR's equivalent-headings note.
2026-05-13 21:33:50 -07:00
Addy OsmaniandGitHub 9d8a88812a Merge pull request #170 from toby-bridges/fix/issue-135-empty-scripts-directories-create-inconsi
docs: clarify when skills should include scripts/
2026-05-13 21:30:54 -07:00
Addy OsmaniandGitHub 3cbb832341 Merge pull request #174 from spboyer/improve/skill-frontmatter-compliance
docs(skills): tighten frontmatter for idea-refine and browser-testing-with-devtools
2026-05-13 21:29:09 -07:00
Addy OsmaniandGitHub 3ef830ba83 Merge pull request #169 from 245678000000/codex/fix-cross-skill-paths
fix(spec-driven-development): add explicit cross-skill paths
2026-05-13 21:28:23 -07:00
Shayne BoyerandCopilot 4d277aa72e docs(skills): tighten frontmatter for idea-refine and browser-testing
idea-refine: rewrite the description to follow the repository's
documented "Use when..." trigger convention (AGENTS.md). The previous
description was 135 characters, redundant, and used the skill name
itself as the only trigger phrase, making it the only skill not aligned
with how the other 21 skills self-describe.

browser-testing-with-devtools: surface the Chrome DevTools MCP
dependency at the top of the description and explicitly note the
requirement, so agents that route by MCP availability can detect it
without parsing the body.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-12 16:55:56 -04:00
li9292 de37fc6d3b chore: remove automation scratch files from PR 2026-05-12 11:53:55 +08:00
li9292 df5466380f chore(#135): Empty scripts/ directories create inconsistency
Fixes #135

Ref: https://github.com/addyosmani/agent-skills/issues/135
2026-05-12 11:51:08 +08:00
TianTian 0e497aa1f1 fix codex cross-skill references 2026-05-12 09:12:13 +08:00
li9292 7d07e04fdc fix(#75): Docs inconsistency: conflicting skill description and anatomy guidance
Fixes #75

Ref: https://github.com/addyosmani/agent-skills/issues/75
2026-05-11 15:38:22 +08:00
Addy Osmani aec93252da feat: add interview-me skill (Define phase)
Adds interview-me, a skill that sits upstream of every other
Define-phase skill. Trigger: an underspecified ask, or the user
explicitly invoking the skill ("interview me", "are we sure?",
"stress-test my thinking").

The gap it fills: idea-refine generates variations from a raw idea,
spec-driven-development writes requirements down once you know them,
and doubt-driven-development stress-tests a plan after you've drafted
one. None of those cover the moment before — when the user has said
"build me X" and X is the conventional answer rather than what they
actually want. This skill is the structured interview that surfaces
the gap before any plan, spec, or code exists.

Distinctive mechanics:
- Confidence numbers as forcing function (Step 1 commits to 0-100%)
- Q + GUESS format: every question carries the agent's hypothesis
- One question at a time, never batched
- Checkable stop condition: "Can I predict the user's reaction to the
  next three questions I would ask?"
- Six-line restate template ending in explicit yes
- Names the four bad yeses ("whatever you think", "sounds good",
  "sure let's go", silence) with specific re-prompts

Registers the skill in:
- CLAUDE.md (Define phase, also adding idea-refine which was missing)
- README.md (skills table, count, project tree)
- skills/using-agent-skills/SKILL.md (flowchart, lifecycle sequence,
  quick reference table)
2026-05-10 13:23:48 -07:00
BasedDev03 ac61f29182 fix(marketplace): use relative path source to bypass install bug
The github source object form `{ "source": "github", "repo": "..." }`
fails to install on Claude Code v2.1.112 with:

  fatal: repository 'https://github.com/:addyosmani/agent-skills.git/' not found

The `:owner/:repo` template is not interpolated, producing a malformed
URL. Since the plugin lives in the same repo as the marketplace, switch
to a relative path (`./`) which sidesteps the github source path
entirely and works for all marketplace add transports (github, https,
ssh, local).

CI workflow `.github/workflows/test-plugin-install.yml` already uses
`claude plugin marketplace add ./`, so the change is exercised on every
push.
2026-05-10 15:14:30 +05:30
Addy OsmaniandGitHub 3ff4b518b3 Merge pull request #159 from MiladZarour/codex/readme-skill-count-158
docs: clarify README skill count
2026-05-09 14:55:42 -07:00
Milad Zarour 2b664059e9 docs: clarify README skill count 2026-05-09 09:25:22 +02:00
Addy OsmaniandGitHub 4c585c3721 Merge pull request #139 from federicobartoli/feat/doubt-driven-development
Add doubt-driven-development skill
2026-05-08 20:37:44 -07:00
Addy Osmani f124701269 Merge branch 'main' into feat/doubt-driven-development
Resolves README.md conflict by taking main's wording ("entry points.
The pack includes 21 skills total") and Meta section, both landed in
PR #142 while this PR was open. The doubt-driven-development row in
the Build table and the directory tree entry auto-merged cleanly.
2026-05-08 20:36:32 -07:00
Addy OsmaniandGitHub dc9eb44a1d Merge pull request #132 from Bortlesboat/codex/session-start-json-regression
test: add session-start JSON regression coverage
2026-05-08 17:30:04 -07:00
Addy Osmani 549b8b11fb docs: explain when and how to run the session-start hook test 2026-05-08 17:29:36 -07:00
Addy OsmaniandGitHub c2038b663f Merge pull request #142 from aqilaziz/docs-list-using-agent-skills
docs: list using-agent-skills in README
2026-05-08 17:21:42 -07:00
Addy Osmani f146f28a29 docs: keep "entry points" framing alongside skill count 2026-05-08 17:20:26 -07:00
aqilaziz ff6a044cfe docs: list using-agent-skills in README 2026-05-08 04:20:43 +07:00
Federico Bartoli 97e12d03e7 Harden doubt-driven-development: cross-model + internal consistency
Folds in the safety and consistency findings surfaced by running
the skill against itself in two cycles (single-model adversarial
review + cross-model verification via Codex).

Cross-model escalation is now offered in every interactive cycle,
and the CLI invocation path uses a read-only sandbox with prompts
piped through stdin to neutralize shell-escaping and prompt-injection
risks (verified against Codex 0.128.0 and Gemini 0.41.2 locally).

Internal consistency fixes from the adversarial self-review: the
adversarial prompt explicitly overrides persona templates; the
persona roster is referenced rather than duplicated; the Step 2
'Claim' bullet is renamed Assertion to disambiguate from the Step 1
CLAIM block; the manual fallback in Loading Constraints is labeled
as a degraded last-resort path; the forward reference to Step 3 is
anchored; the Verification checklist no longer contains an item not
derivable from the Process; and using-agent-skills's Lifecycle
Sequence now includes the skill at position 7.
2026-05-07 20:43:59 +02:00
Federico Bartoli 0af1a5ef15 feat: add doubt-driven-development skill
Codifies adversarial fresh-context review as an in-flight development
posture, distinct from /review (post-hoc PR-level verdict). Every
non-trivial decision passes through a 5-step cycle (CLAIM → EXTRACT →
DOUBT → RECONCILE → STOP) before standing.

Cross-model escalation is described as a contract, not as hardcoded
CLI invocations — the skill instructs the agent to ask the user which
external tool to use and how, since CLI syntax (Gemini, Codex, etc.)
changes and varies by environment.

Updates README skill listing (count, Build table, project tree),
CLAUDE.md Skills by Phase, and using-agent-skills flowchart + Quick
Reference for discoverability parity with the existing skills.
2026-05-07 19:05:49 +02:00
Addy OsmaniandGitHub 742dca58ae Merge pull request #114 from creazyfrog/fix/plugin-json-declare-skills-and-agents
fix(plugin): declare skills and agents paths in plugin.json
2026-05-06 18:33:06 -07:00
Addy Osmani 23cf44428d fix(plugin): use directory form for skills (auto-discover)
The Claude Code plugin schema accepts string|array for the `skills`
field; passing a directory path auto-discovers every `<name>/SKILL.md`
beneath it (per https://code.claude.com/docs/en/plugins-reference,
which lists `"./custom/skills/"` as a valid example).

Switching `skills` from a 21-element array to `"./skills"` keeps the
fix for #112 (skills are still explicitly declared, so discovery is
not suppressed) while removing the maintenance burden — adding a new
skill no longer requires also editing this manifest.

`agents` stays as an explicit array because `./agents/` contains
`README.md`, which would be picked up as a malformed agent if the
directory form were used here.
2026-05-06 18:22:55 -07:00
Bortlesboat d409c9ae5c test: add session-start JSON regression coverage 2026-05-06 21:21:34 -04:00
Addy OsmaniandGitHub b08f834291 Merge pull request #70 from sbusanelli/fix/redundant-verification
Fix: Add guidance to prevent redundant build verification commands
2026-05-06 18:18:37 -07:00
Addy Osmani b765343015 docs: tighten redundant-verification wording for consistency
Unify the framing across the verification note, rationalization row,
and red flag entry in both incremental-implementation and
test-driven-development skills. The previous wording mixed "once per
increment" (correct) with "no additional value after success" (only
true if nothing has changed), which an agent could read as "skip
verification entirely after one success."

The unified rule: after a successful run, don't repeat the same
command unless the code has changed since.
2026-05-06 18:12:48 -07:00
Addy OsmaniandGitHub f504276d8e Merge pull request #108 from devmarkpro/main
add https installation guide in README
2026-05-02 19:23:40 -07:00
Mark KaramyarandGitHub 22fb1b4a4b docs: use HTTPS URL for plugin install to avoid SSH errors 2026-05-01 04:17:43 +02:00
Mark KaramyarandGitHub ba867fb33d Merge branch 'addyosmani:main' into main 2026-05-01 03:35:28 +02:00