Commit Graph
231 Commits
Author SHA1 Message Date
Mahipal 6972fe933e docs(skills): rewrite container-security descriptions to a uniform standard
All 33 container-security skills now carry what it does, an explicit
"Use when" trigger, keywords, and a negative trigger naming the nearest
neighbour. Six collision clusters resolved by differentiating scope
rather than merging, so no skill is removed:

- kube-bench: running the tool vs interpreting findings into an audit
- Calico: portable upstream NetworkPolicy vs Calico-as-CNI vs Calico-only
  CRDs (GlobalNetworkPolicy, HostEndpoint, DNS egress)
- Falco: deploying and operating it vs authoring escape rules
- container escape: tool-agnostic runtime signals vs Falco rule syntax vs
  static posture audit vs offensive breakout
- Trivy: all-target platform and operator vs single-image scan
- Docker: images and Dockerfiles vs daemon.json vs the CIS audit script

Also replaces the templated "When to Use" boilerplate in these files,
including bullets that only restated the skill's own name.

Worst pair (Pod Security Standards vs Pod Security Admission) drops from
0.77 cosine to below the 0.45 threshold. Repo-wide: colliding pairs
60 -> 56, skills involved 105 -> 94.
2026-08-23 17:15:30 +02:00
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