Commit Graph
230 Commits
Author SHA1 Message Date
Mahipal a81b233649 ci: add description-quality and collision gates
The description is the only signal an agent sees at discovery time, so
overlapping descriptions cause misrouting. Nothing in CI checked for that.

- tools/lint-descriptions.py enforces name==folder, description <=1024
  chars, terminal punctuation (a truncation canary), a trigger clause, a
  negative trigger, and a 500-line body cap. Pre-existing failures are
  grandfathered in tools/lint-baseline.json so this blocks new debt only;
  the baseline may shrink and never grow.
- tools/detect-collisions.py scores every description pair by TF-IDF
  cosine and ratchets the count of unreviewed near-duplicates. It strips
  negative-trigger clauses before vectorizing: those name the sibling
  skill on purpose, so scoring them would make correct disambiguation
  raise a pair's similarity.
- wire both into validate-skills.yml, along with agentskills conformance,
  an index.json freshness check, and a guard that fails the build if a
  regex frontmatter parser is reintroduced.
- broaden the path filters from tools/validate-skill.py to tools/**, as
  noted when #105 merged.

All five gates verified to fail on deliberately broken input.
2026-08-23 17:15:12 +02:00
Mahipal 796d96c413 fix: replace three hand-rolled YAML parsers with a shared PyYAML loader
index.json shipped 604 of 817 descriptions truncated to their first line.
The cause was the inline regex parser in update-index.yml: it reconstructed
multi-line descriptions only for the YAML block-scalar styles ('>' and '|')
and silently dropped continuation lines for every other style.

A census of the corpus explains the blast radius:

  block scalar   (description: >-)    43
  single-quoted multiline            278
  plain unquoted multiline           496
  single-line                          0

So 774 of 817 skills (94.7%) used a style the parser mishandled. Commit
d56fc0a7 had fixed only the 43 block-scalar files, and CONTRIBUTING.md
recommends that one working style, which is why it stayed hidden.

- add tools/skill_frontmatter.py, the single PyYAML-backed loader
- add tools/generate-index.py so generation is testable outside CI, with
  a --check mode for use as a gate
- delete the hand-rolled parsers from validate-skill.py (98 lines) and
  validate-agentskills.py, routing both through the shared loader
- implement the reserved-word check that agentskills-skill.schema.json
  names validate-agentskills.py as the enforcement point for

Verified by a differential harness against yaml.safe_load ground truth:
index-vs-source mismatches 606 -> 0.
2026-08-23 17:15:12 +02:00
mukul975 f76261573a chore: auto-update index.json and skill count 2026-08-20 15:57:01 +00:00
Mahipal a0372fc6aa Merge pull request #112 from kevglynn/contrib/100-defender-false-positive
fix: reduce Windows Defender false positive on fileless malware skill
2026-08-20 17:56:49 +02:00
mukul975 23479e4b1d chore: auto-update index.json and skill count 2026-08-20 15:56:26 +00:00
Mahipal 4f4ec193ff Merge pull request #107 from ridaqp/fix/fileless-malware-attack-mapping
Fix ATT&CK mapping in detecting-fileless-malware-techniques
2026-08-20 17:56:15 +02:00
Mahipal 661d79ebab Merge pull request #105 from Daytona39264/ci-wire-validator
ci: trigger skill validation on validator/workflow changes
2026-08-20 17:55:59 +02:00
mukul975 9bbffbcd33 chore: auto-update index.json and skill count 2026-08-20 15:55:48 +00:00
Mahipal 1a7cad8d2a Merge pull request #113 from farhan6667/fix/ioc-extraction-agent-report-timestamp
Fix always-empty timestamp in performing-malware-ioc-extraction agent.py report
2026-08-20 17:55:36 +02:00
Mahipal 4c0b700ac5 Merge pull request #95 from valorisa/main 2026-08-08 16:55:19 +02:00
mukul975 e612f4944c chore: auto-update index.json and skill count 2026-08-02 17:47:41 +00:00
Mahipal d56fc0a7f9 Fix index.json generator to parse folded YAML descriptions
The generator's `^description:\s*(.+)$` regex captured the block-scalar
indicator (">-") instead of the wrapped text, corrupting 43 descriptions in
index.json. Parse `>`/`|` block scalars properly and regenerate (0 broken).
Also refresh the count-update comment examples 754 -> 817.
2026-08-02 10:47:14 -07:00
Mahipal 2672b8eb12 Correct stale skill counts in docs to current 817
CITATION.cff 753 -> 817; ATTACK_COVERAGE.md 753+ -> 817; mappings/README.md
"skills scanned" 742 -> 817; coverage-summary.md 753 -> 805 (ATT&CK-mapped).
2026-08-02 10:47:14 -07:00
Mahipal 507d911bec README: correct framework claims/versions, add contributors section
- Replace "every skill maps to six frameworks / six compliance checkboxes"
  with type-dependent mapping + accurate coverage line (ATT&CK 805, CSF 804,
  D3FEND 139, AI RMF 97, F3 94, ATLAS 93 of 817).
- Update stale versions: ATLAS v5.4/84 -> 2026.07/101(+77 sub); D3FEND
  v1.3/267 -> v1.4.0/270; ATT&CK 754/754 -> 805/817, 286 -> 290 techniques;
  Enterprise tactic table 14 -> 15 (Defense Evasion split into Stealth TA0005
  + Defense Impairment TA0112, verified against ATT&CK v19.1).
- Fix broken nav anchor (#five-frameworks -> #six-frameworks).
- Add "Thanks to our contributors" section with GitHub avatars.
2026-08-02 10:47:14 -07:00
Mahipal 88f408ada3 Correct agentskills.io validator/schema to match the standard
The standard requires only name+description; additional top-level keys are
permitted metadata. Fixes:
- validator no longer counts extra top-level keys as violations (reports them
  as informational only).
- angle-bracket check now ignores YAML block-scalar indicators (`>`, `>-`,
  `|`), which were false-positiving on multi-line descriptions; no skill has
  genuine angle-bracket content.
- schema additionalProperties false -> true to match.

Audit result: 817/817 compliant.
2026-08-02 09:53:50 -07:00
mukul975 fbe6b12f21 chore: auto-update index.json and skill count 2026-08-02 16:32:37 +00:00
Mahipal 9bd6051d84 Add agentskills.io compliance schema and validator
- tools/agentskills-skill.schema.json: strict JSON Schema for the
  agentskills.io SKILL.md frontmatter standard (name+description required;
  optional license/compatibility/metadata/allowed-tools; no other top-level
  keys).
- tools/validate-agentskills.py: read-only compliance validator (also checks
  name==directory and the no-angle-brackets rule).
2026-08-02 09:32:13 -07:00
Mahipal 2fb6a9faff Rewrite 548 skill descriptions to the activation rubric
Each rewritten description now states both what the skill does (concrete
capability, named tools/artifacts) and an explicit when-to-use trigger,
improving agent discovery/activation. Grounded in each skill's own body;
changes confined to the `description` field only (bodies and all other
frontmatter untouched). Produced by a gated audit->rewrite->recheck loop
(548 -> 0 flagged) with a sampled anti-invention check (0 ungrounded).

Schema: 817/817 pass. Framework-ID gate: 0 defects.
2026-08-02 09:32:13 -07:00
mukul975 04a207702e chore: auto-update index.json and skill count 2026-08-02 13:06:31 +00:00
Mahipal 2545b2d3d5 Fix framework-ID defects across 53 skills (grounded in authoritative data)
Deterministic audit against vendored MITRE/NIST oracles (ATT&CK v19.1,
ATLAS 2026.07, NIST CSF 2.0, D3FEND v1.4.0) found and fixed:

- 27 wrong-framework leaks on 12 AI-security skills: ATLAS AML.* IDs were
  under `mitre_attack` (-> `atlas_techniques`) and AI-RMF GOVERN/MEASURE IDs
  under `nist_csf` (-> `nist_ai_rmf`).
- RS.AN-01 -> RS.AN-03 on 37 forensics/incident-analysis skills (CSF 1.1 ID
  retired in CSF 2.0; RS.AN-03 is the incident-analysis successor).
- PR.DS-06 -> PR.DS-01 on the SLSA/Sigstore provenance skill (CSF 1.1 ID
  absorbed into PR.DS-01 in CSF 2.0; body prose updated too).
- AML.T0104 -> AML.T0010 on 3 software-supply-chain skills (T0104 is
  "Publish Poisoned AI Agent Tool" -- wrong topic; T0010 "AI Supply Chain
  Compromise" is correct).

CSF/ATLAS replacements verified against NIST CSWP.29, the official CSF
1.1->2.0 transition workbook, and mitre-atlas/atlas-data.
Framework-ID gate: 0 defects. Schema: 817/817 pass.
2026-08-02 06:00:54 -07:00
Daytona39264 37786484a9 docs: fix copilot-instructions review feedback
Address PR review threads: valid YAML subdomain example, separate
D3FEND list items, NIST CSF ID convention, document tools/validate-skill.py,
and fix Quick Reference backticks.
2026-07-28 13:20:39 -04:00
Syed Farhan Ahmed a134047328 Fix always-empty timestamp in IOC extraction report
generate_ioc_report()'s "generated" field used:
    datetime.utcnow().isoformat() if "datetime" in dir() else ""

"datetime" is never imported anywhere in this file, and dir() with
no arguments only inspects local scope names -- so this guard is
always False, and every generated report had "generated": "" instead
of a real timestamp.

Fixed by importing datetime/timezone at the top and calling
datetime.now(timezone.utc).isoformat() directly (the non-deprecated
replacement for utcnow(), since Python 3.12 deprecates utcnow()).

Tested: python3 -m py_compile, --help works, and:
    python3 agent.py report --file <any file>
now produces a real ISO 8601 UTC timestamp
(e.g. "2026-07-17T14:46:03.178652+00:00") instead of an empty string.
2026-07-17 19:46:11 +05:00
Kevin Glynn eec1246fee fix: use explicit path for YARA rule in Volatility command
The --yara-file reference should not assume a specific working directory.
Use a placeholder path that analysts will substitute for their setup.
2026-07-16 17:16:09 -04:00
Kevin Glynn d4e38c2867 fix: reduce Windows Defender false positive on fileless malware skill
Add AV false-positive guidance for issue #100, move inline YARA rule to
references/yara-fileless-powershell.yar, and replace literal encoded
PowerShell payload with a placeholder in the sample report.
2026-07-16 17:08:46 -04:00
Rida 9c7162130e Fix ATT&CK mapping in detecting-fileless-malware-techniques 2026-07-08 16:41:54 +04:00
valorisaandalghamdhyl-arch 292bcf2320 Apply suggestion from @alghamdhyl-arch
Co-authored-by: alghamdhyl-arch <alghamdhyl@gmail.com>
2026-07-08 10:36:23 +02:00
Daytona39264andCopilot 154daf5df0 docs: add Copilot instructions for the repository
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-07-07 04:54:23 -04:00
Daytona39264andCopilot fbb74c2a74 ci: trigger skill validation on validator/workflow changes
Add tools/validate-skill.py and the workflow file to the push/pull_request
path filters so edits to the validator or workflow re-run validation, and
add workflow_dispatch for manual runs.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-07-07 04:48:23 -04:00
valorisa 257b239248 Update action links in README.fr.md
Updated links for star, fork, discuss, and contribute actions.
2026-06-27 15:28:44 +02:00
valorisa ca69a668cc fichier README.fr.md complet, corrigé et final 2026-06-27 15:17:50 +02:00
valorisa 10c5ed8352 Complete FR translation: add missing sections, update stats to 817/29/6, repair links 2026-06-27 15:13:29 +02:00
valorisa 02c6a407d1 Fix: update stats to 817/29/6, repair links, remove GitHub UI badges, and clean ATT&CK section 2026-06-27 14:52:18 +02:00
valorisa 1ba95f4fda Merge branch 'mukul975:main' into main 2026-06-27 14:47:30 +02:00
valorisa 363b7cb559 Fix: update stats to 817/29/6, repair links, remove GitHub UI badges, and clean ATT&CK section 2026-06-27 14:43:12 +02:00
mukul975 673da1f3b0 Fix validator: register hardware-firmware-security subdomain, skip .bak dirs
- Add hardware-firmware-security as a canonical subdomain (folding in the
  firmware-analysis/firmware-security aliases). The 4 new hardware/firmware
  skills failed validation because the subdomain was not in the allowed set.
- Skip skills/*.bak/ backup directories in --all mode; they have no SKILL.md
  and were producing 21 false failures.
- Result: validate-skill.py --all now reports 817/817 passing, exit 0.
2026-06-26 16:37:35 +02:00
mukul975 1f5cb12ac0 chore: auto-update index.json and skill count 2026-06-26 14:06:13 +00:00
Mahipal f3a472b105 Merge pull request #85 from nyxst4ck/nyxst4ck/auto-quote-pip-extras-20260621-091605
docs: quote pip extras install examples
2026-06-26 16:06:02 +02:00
Mahipal 4e165f9a8d Merge pull request #87 from ioxoi/fix/validator-and-disclaimers
Fix validator nested-name misparse (94 false fails), unify with CI, add authorized-use banner
2026-06-26 16:05:40 +02:00
valorisa c1bd4170a6 Fix links in README.FR.md 2026-06-24 14:29:11 +02:00
valorisa e3a10f0981 Fix link formatting in README.FR.md 2026-06-24 14:26:44 +02:00
valorisa 08daec20dd Update README.FR.md 2026-06-24 14:25:32 +02:00
valorisa 6fe910a1ed Fix formatting in README.FR.md links 2026-06-24 14:19:50 +02:00
valorisa 508536ccc4 Fix formatting in README.FR.md links 2026-06-24 14:16:10 +02:00
valorisa 38bbd0d87d Fix link formatting in README.FR.md 2026-06-24 14:15:35 +02:00
valorisa 110500a50d Fix link text in French README 2026-06-24 14:14:18 +02:00
valorisa 1ddd526cd9 Fix link anchor case in README.FR.md 2026-06-24 14:04:29 +02:00
valorisa 9d8302228f Mise à jour du README.FR.md avec des badges
Ajout de plusieurs badges pour les compétences en cybersécurité et les contributions.
2026-06-24 13:52:09 +02:00
valorisa d507b9561e Update README.FR.md with header and image
Added a header and image to the French README.
2026-06-24 13:41:47 +02:00
valorisa c5cbc806ac Add French README for Anthropic Cybersecurity Skills
Added a comprehensive README in French detailing the Anthropic Cybersecurity Skills project, including its features, frameworks, and usage instructions.
2026-06-24 13:35:19 +02:00
mukul975 768ca51c8d chore: bump plugin version to v1.3.0 2026-06-22 17:11:46 +00:00