cisco-ai-skill-scanner 2.0.14 incorrectly flags standard Unicode
characters (em dashes, arrows) as 'obfuscated prompt-injection'.
Neither baseline files, severity_overrides, nor cisco_policy: permissive
suppress these false positives. Disabling the Cisco scanner until the
upstream fix is released. The base plugin scanner still runs all core
security checks.
Co-authored-by: Auree Aubert <aureeaubert@users.noreply.github.com>
The cisco-ai-skill-scanner 2.0.14 flags standard Unicode characters
(em dashes, arrows) as 'obfuscated prompt-injection'. The baseline and
severity_overrides config options don't affect the Cisco scanner, so
use cisco_policy: permissive to relax the detection rules.
Co-authored-by: Auree Aubert <aureeaubert@users.noreply.github.com>
The cookbook guidance said there was no copy tool and the agent had to place
the code itself. `cdk add cookbook/<slug>` is that tool now, so the skill says
what it does, where it writes, and — the part an agent gets wrong — that the
cookbook's own procedure has to be picked up at its Adapt section, because its
opening steps assume you found the folder on GitHub and still have to place it.
The command reference documented `--template <blank|full>` and
`--list-templates` for `cdk init`. Neither flag exists: the scaffold never
varies and a worked example comes from a cookbook. It also had no row for `add`
or `cookbook` at all, which is the reference an agent reads to decide what to
run. Fixed, along with the two recipes and the example that invoked
`--template full`.
Refreshes the cookbook snapshot, which had gone stale at two cookbooks while
the catalog grew to three — `crm-enrichment` was missing from the menu.
Regenerates llms.txt and the skill's metadata snapshot, both CI-gated.
Co-authored-by: Cursor <cursoragent@cursor.com>
* CI: run the HOL AI plugin scanner
hashgraph-online/awesome-ai-plugins requires every listed plugin's source
repo to invoke `ai-plugin-scanner-action` on push/pull_request before the
listing PR can merge (getcargohq/cargo-skills#83 → their PR #72).
Pinned to a full commit SHA instead of the floating `v1` tag, with a
read-only token and no secrets in scope, so a third-party action in our
workflow surface can't reach anything it shouldn't.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* CI: publish the scanner report when the scan fails
The action's built-in summary step is `if: success()`, so a failing scan
prints counts and no findings. Render markdown to a file and cat it into
the step summary unconditionally.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* CI: tee the scanner report to the job log as well
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* CI: clear the plugin scanner's 80-point / no-high gate
The scanner job this PR added failed on its first run: 71/100 against a
`min_score` of 80, one critical finding and one high. The awesome-ai-plugins
contribution gate re-scans this repo with the same two thresholds, so the
findings had to be fixed rather than configured around. Now 92/100 (A), zero
critical, zero high.
- Pin every `uses:` in .github/workflows/ to a full commit SHA, and add
.github/dependabot.yml so the pins move weekly instead of never.
- Add SECURITY.md: private reporting via the Security tab, and an explicit
boundary between this bundle and the cargo-ai CLI / Cargo platform.
- Stop inlining `curl … install.sh` in cargo/SKILL.md. The command now lives
only in README.md, where a human runs it; the router keeps the guidance
(never run it on the user's behalf) and points there.
- Use execFileSync, not execSync, for `npm root -g` in the QA script library —
no shell to interpret a command string. Windows gets the npm.cmd shim.
- Fill in repository/license/keywords in .codex-plugin/plugin.json, a category
on the .agents marketplace entry, and add .codexignore.
- Set write_step_summary: false on the scanner action and publish the report
ourselves, so it lands once whether the gate passes or fails.
Two medium findings are left standing and documented in CHANGELOG.md: the
`anthropic` provider slug in cargo-gtm's description (correct, and CI-synced
with the CLI) and `fetch(` in the run-output downloader (the point of the
function). Neither is a gate failure.
Co-Authored-By: Auree Aubert <16732193+aureeaubert@users.noreply.github.com>
Co-Authored-By: replicas-connector[bot] <replicas-connector[bot]@users.noreply.github.com>
---------
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: replicas-connector[bot] <replicas-connector[bot]@users.noreply.github.com>
Co-authored-by: Auree Aubert <16732193+aureeaubert@users.noreply.github.com>