Commit Graph
237 Commits
Author SHA1 Message Date
Mahipal c071749a2c Merge pull request #124 from OctoBored/fix/star-history-chart
Fix broken star history chart in README
2026-08-23 18:03:34 +02:00
Mahipal 6243c20d6d docs: add SCOPE.md and write down the contribution policy
Several open PRs could not be decided because CONTRIBUTING.md had nothing to
point at: no scope, no self-promotion or affiliation rules, no PR-size
guidance. Declining on an unwritten rule is unfair to contributors, so the
rules go in first.

SCOPE.md (new)
  What a skill is, and what this repository is not: runtimes, engines,
  products and applications belong in their own repositories. Offensive and
  dual-use content is explicitly in scope - the line is defensive framing and
  authorization, not subject matter.

CONTRIBUTING.md
  - one skill per pull request, and why batching stalls good work
  - overlap: while the description backlog is worked down, a new skill that
    overlaps an existing one will usually be asked to extend it instead
  - self-promotion and vendor links: commercial tools are fine, including
    ones with no free tier, but cost must be stated in Prerequisites and
    links must go to documentation rather than signup funnels
  - affiliation disclosure, with the consequence stated: the PR goes on hold
    until it is disclosed, and nothing is closed over it
  - AI-assisted contributions are allowed and must be disclosed; a human must
    have run the commands and takes responsibility
  - review and response, including a 14-day stale window that closes nothing
    permanently
  - subdomain list corrected from 24 entries to the 34 canonical values the
    validator actually accepts, with the 12 accepted aliases named

README.md
  Removed the claim that every PR is reviewed within 48 hours. The oldest
  open PR has been waiting since April. Replaced the stale "most in need"
  counts, which named domains with 2 and 5 skills that actually have 6 and 10.

tools/README.md
  Corrected to match the code: eight required frontmatter fields, not five,
  and PyYAML is now a dependency.
2026-08-23 18:02:38 +02:00
mukul975 d577ac953e chore: auto-update index.json and skill count 2026-08-23 15:15:56 +00:00
Mahipal 6e363c4683 chore: regenerate index.json with the fixed generator
First regeneration through tools/generate-index.py. Restores the 591
descriptions that were previously truncated to their first line.

The 13 that still lack terminal punctuation are genuine source-level
omissions in the SKILL.md files, not parser damage.
2026-08-23 17:15:32 +02:00
Mahipal 2e9e49b929 fix(readme): restore the star history chart
GitHub restricted access to the stargazer API endpoints in July 2026, so
api.star-history.com now returns an error notice rather than a chart.
Verified by parsing both SVGs: the official endpoint returns a single
path with five text nodes reading "GitHub restricted access to star
data", while the replacement returns real axes, ticks and series.

Reported in #124.
2026-08-23 17:15:30 +02:00
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
OctoBored 7b8f48387b README: fix broken star history chart
The star history chart in both READMEs no longer renders due to GitHub stargazer API restrictions. Switch the chart to a working mirror so the stargazer history displays again.
2026-08-19 12:20:15 +00: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