@aegis-scan/skills 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ATTRIBUTION.md +75 -0
- package/CHANGELOG.md +129 -0
- package/LICENSE +21 -0
- package/README.md +123 -0
- package/dist/bin.d.ts +3 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +122 -0
- package/dist/bin.js.map +1 -0
- package/dist/commands/info.d.ts +5 -0
- package/dist/commands/info.d.ts.map +1 -0
- package/dist/commands/info.js +75 -0
- package/dist/commands/info.js.map +1 -0
- package/dist/commands/install.d.ts +7 -0
- package/dist/commands/install.d.ts.map +1 -0
- package/dist/commands/install.js +87 -0
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/list.d.ts +7 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +82 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/skills-loader.d.ts +23 -0
- package/dist/skills-loader.d.ts.map +1 -0
- package/dist/skills-loader.js +213 -0
- package/dist/skills-loader.js.map +1 -0
- package/package.json +63 -0
- package/skills/defensive/README.md +9 -0
- package/skills/mitre-mapped/README.md +10 -0
- package/skills/offensive/snailsploit-fork/advanced-redteam/SKILL.md +148 -0
- package/skills/offensive/snailsploit-fork/ai-security/SKILL.md +592 -0
- package/skills/offensive/snailsploit-fork/basic-exploitation/SKILL.md +10783 -0
- package/skills/offensive/snailsploit-fork/bug-identification/SKILL.md +1256 -0
- package/skills/offensive/snailsploit-fork/crash-analysis/SKILL.md +12466 -0
- package/skills/offensive/snailsploit-fork/deserialization/SKILL.md +185 -0
- package/skills/offensive/snailsploit-fork/edr-evasion/SKILL.md +1806 -0
- package/skills/offensive/snailsploit-fork/exploit-dev-course/SKILL.md +428 -0
- package/skills/offensive/snailsploit-fork/exploit-development/SKILL.md +699 -0
- package/skills/offensive/snailsploit-fork/fast-checking/SKILL.md +487 -0
- package/skills/offensive/snailsploit-fork/file-upload/SKILL.md +822 -0
- package/skills/offensive/snailsploit-fork/fuzzing/SKILL.md +340 -0
- package/skills/offensive/snailsploit-fork/fuzzing-course/SKILL.md +2105 -0
- package/skills/offensive/snailsploit-fork/graphql/SKILL.md +209 -0
- package/skills/offensive/snailsploit-fork/idor/SKILL.md +608 -0
- package/skills/offensive/snailsploit-fork/initial-access/SKILL.md +1528 -0
- package/skills/offensive/snailsploit-fork/jwt/SKILL.md +276 -0
- package/skills/offensive/snailsploit-fork/keylogger-arch/SKILL.md +197 -0
- package/skills/offensive/snailsploit-fork/mitigations/SKILL.md +1351 -0
- package/skills/offensive/snailsploit-fork/oauth/SKILL.md +366 -0
- package/skills/offensive/snailsploit-fork/open-redirect/SKILL.md +487 -0
- package/skills/offensive/snailsploit-fork/osint/SKILL.md +399 -0
- package/skills/offensive/snailsploit-fork/osint-methodology/SKILL.md +434 -0
- package/skills/offensive/snailsploit-fork/parameter-pollution/SKILL.md +595 -0
- package/skills/offensive/snailsploit-fork/race-condition/SKILL.md +881 -0
- package/skills/offensive/snailsploit-fork/rce/SKILL.md +1069 -0
- package/skills/offensive/snailsploit-fork/request-smuggling/SKILL.md +773 -0
- package/skills/offensive/snailsploit-fork/shellcode/SKILL.md +477 -0
- package/skills/offensive/snailsploit-fork/sqli/SKILL.md +372 -0
- package/skills/offensive/snailsploit-fork/ssrf/SKILL.md +830 -0
- package/skills/offensive/snailsploit-fork/ssti/SKILL.md +349 -0
- package/skills/offensive/snailsploit-fork/vuln-classes/SKILL.md +1229 -0
- package/skills/offensive/snailsploit-fork/waf-bypass/SKILL.md +820 -0
- package/skills/offensive/snailsploit-fork/windows-boundaries/SKILL.md +15153 -0
- package/skills/offensive/snailsploit-fork/windows-mitigations/SKILL.md +14546 -0
- package/skills/offensive/snailsploit-fork/xss/SKILL.md +784 -0
- package/skills/offensive/snailsploit-fork/xxe/SKILL.md +996 -0
- package/skills/ops/README.md +6 -0
package/ATTRIBUTION.md
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# Attribution
|
|
2
|
+
|
|
3
|
+
`@aegis-scan/skills` is a multi-source skill library. Each source is
|
|
4
|
+
credited individually below. Every fork preserves upstream provenance
|
|
5
|
+
via a per-file `<!-- aegis-local: forked … from <upstream>@<sha>; attribution preserved -->`
|
|
6
|
+
HTML comment at the top of each `SKILL.md`, independent of whichever
|
|
7
|
+
attribution convention the upstream author used inside the file body.
|
|
8
|
+
|
|
9
|
+
## Offensive skills — SnailSploit/Claude-Red
|
|
10
|
+
|
|
11
|
+
All skills under `skills/offensive/snailsploit-fork/` are forked from
|
|
12
|
+
[SnailSploit/Claude-Red](https://github.com/SnailSploit/Claude-Red)
|
|
13
|
+
under MIT License.
|
|
14
|
+
|
|
15
|
+
- **Upstream author:** Kai Aizen (SnailSploit) — https://snailsploit.com
|
|
16
|
+
- **Upstream original source:** Sahar Shlichov — https://github.com/sahar042/offensive-checklist
|
|
17
|
+
- **SPDX:** MIT (README-declared by upstream; no standalone LICENSE file upstream at fork time)
|
|
18
|
+
- **Fork-SHA:** `c74d53e2938b59f111572e0819265a1e73029393`
|
|
19
|
+
- **Fork date:** 2026-04-23
|
|
20
|
+
- **Skill count at fork:** 37 (upstream README tabulates 38; the `patch-diffing` subdirectory listed in the README's "Infrastructure & Binary" table is absent on disk at the fork SHA, so we ship what exists rather than what is claimed)
|
|
21
|
+
|
|
22
|
+
### Upstream-attribution format notes
|
|
23
|
+
|
|
24
|
+
Upstream uses two attribution conventions across its 37 files:
|
|
25
|
+
|
|
26
|
+
- Thirty-two files use an older `## Metadata > - Source: <url>` bullet format pointing at the upstream `sahar042/offensive-checklist` file that seeded the skill.
|
|
27
|
+
- Five files (`fuzzing`, `jwt`, `osint`, `shellcode`, `sqli`) use a newer YAML-frontmatter convention (`--- name: description: ---`) without a separate Metadata section.
|
|
28
|
+
|
|
29
|
+
Both conventions are semantically equivalent: they identify the skill
|
|
30
|
+
and, where present, link to the upstream checklist source. AEGIS
|
|
31
|
+
preserves whichever form the upstream file used. The reliable
|
|
32
|
+
per-file provenance anchor across all 37 files is the AEGIS-added
|
|
33
|
+
`<!-- aegis-local: forked … -->` HTML header.
|
|
34
|
+
|
|
35
|
+
### Do-not-remove rule
|
|
36
|
+
|
|
37
|
+
Every forked `SKILL.md` retains both its original upstream content
|
|
38
|
+
byte-identically and the AEGIS-added header. When AEGIS runs a
|
|
39
|
+
quarterly upstream-sync (via `scripts/sync-upstream.sh`) the same
|
|
40
|
+
rule applies to any incoming updates — no stripping of upstream
|
|
41
|
+
attribution, no removal of AEGIS-added headers, no paper-over of
|
|
42
|
+
upstream format variance.
|
|
43
|
+
|
|
44
|
+
## Defensive skills — AEGIS-native (skills-v0.2+)
|
|
45
|
+
|
|
46
|
+
Planned: AEGIS-authored defensive methodology skills mirrored from
|
|
47
|
+
the `@aegis-wizard/cli` pattern library under MIT License. Source is
|
|
48
|
+
AEGIS itself; this section will expand when the skills ship.
|
|
49
|
+
|
|
50
|
+
## MITRE-mapped skills — upstream cybersecurity framework-mapped source (skills-v0.2+)
|
|
51
|
+
|
|
52
|
+
Planned: cherry-picked skills from
|
|
53
|
+
[mukul975/Anthropic-Cybersecurity-Skills](https://github.com/mukul975/Anthropic-Cybersecurity-Skills)
|
|
54
|
+
under Apache-2.0 with per-skill quality-audit plus MITRE ATT&CK /
|
|
55
|
+
D3FEND / NIST CSF framework-mappings applied. Section populates when
|
|
56
|
+
skills-v0.2 lands.
|
|
57
|
+
|
|
58
|
+
## Operations skills — TBD (skills-v0.3+)
|
|
59
|
+
|
|
60
|
+
Planned: incident-response, post-build-audit, verify-install-integrity
|
|
61
|
+
modules. Source and attribution TBD.
|
|
62
|
+
|
|
63
|
+
## License compatibility
|
|
64
|
+
|
|
65
|
+
AEGIS itself ships under MIT. Offensive skills ship under MIT (via
|
|
66
|
+
upstream). Future cybersecurity-framework-mapped cherry-picks ship
|
|
67
|
+
under Apache-2.0 (via upstream). Both licenses are permissive,
|
|
68
|
+
commercially-redistributable, and require attribution preservation —
|
|
69
|
+
which this file codifies. No license incompatibility.
|
|
70
|
+
|
|
71
|
+
## Changes to upstream
|
|
72
|
+
|
|
73
|
+
See `CHANGELOG.md` for AEGIS-side version history. The only change
|
|
74
|
+
to any forked `SKILL.md` at v0.1.0 is the prepended AEGIS-local HTML
|
|
75
|
+
attribution header documented above.
|
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to `@aegis-scan/skills` are documented here. Format
|
|
4
|
+
follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). The
|
|
5
|
+
skills package uses SemVer; each minor-version may add new skill
|
|
6
|
+
sources and categories. Release cadence is driven by upstream-sync
|
|
7
|
+
and quality-audit completion, not by a fixed schedule.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## [0.1.1] — 2026-04-23 — "ship-gate-caught-recovery"
|
|
12
|
+
|
|
13
|
+
First published release. v0.1.0 was tagged but NEVER published to npm —
|
|
14
|
+
the publish-skills.yml tarball-scrub gate caught two internal planning-
|
|
15
|
+
path references in placeholder category READMEs at the `Verify no
|
|
16
|
+
internal-codename leaks in shipped tarball` step and refused to
|
|
17
|
+
publish. This v0.1.1 is the clean first-publish.
|
|
18
|
+
|
|
19
|
+
The fortress-discipline CI gate worked exactly as designed: the tag
|
|
20
|
+
landed, the workflow ran, the scrub-gate fired, and nothing reached
|
|
21
|
+
the npm registry. No force-push, no shortcut, no `--no-verify`. The
|
|
22
|
+
full incident post-mortem is retained in the repository's internal
|
|
23
|
+
planning tree; ask the maintainer for access if needed.
|
|
24
|
+
|
|
25
|
+
### Fixed
|
|
26
|
+
|
|
27
|
+
- **`skills/defensive/README.md`** and **`skills/mitre-mapped/README.md`**
|
|
28
|
+
placeholder documents referenced a gitignored operator-local
|
|
29
|
+
planning document by its exact filename; both files are generalized
|
|
30
|
+
to point to "the repository's internal planning tree" instead.
|
|
31
|
+
- **`scripts/sync-upstream.sh`** reviewer-instruction paragraph
|
|
32
|
+
referenced the same operator-local planning document; generalized
|
|
33
|
+
to the same "internal planning tree" phrasing.
|
|
34
|
+
|
|
35
|
+
### Added
|
|
36
|
+
|
|
37
|
+
- **`__tests__/scrub.test.ts`** gains a new describe-block
|
|
38
|
+
(`scrub-clean — future-category placeholder READMEs`) covering the
|
|
39
|
+
three placeholder READMEs under `skills/defensive/`,
|
|
40
|
+
`skills/mitre-mapped/`, and `skills/ops/`. Without this block, the
|
|
41
|
+
v0.1.0 leak passed source-side tests (which iterated only the 37
|
|
42
|
+
forked SKILL.md files plus 4 package-root documents) while failing
|
|
43
|
+
at the CI tarball-scrub gate. Institutional spec-gap closed.
|
|
44
|
+
|
|
45
|
+
### Meta
|
|
46
|
+
|
|
47
|
+
- `v0.1.0` remains as a git-tag pointing at commit `8508aa6` for
|
|
48
|
+
audit-trail purposes but carries no corresponding npm release. If
|
|
49
|
+
you need to verify the v0.1.0 git state, check the tag; if you need
|
|
50
|
+
a running skills package, install `0.1.1` or later.
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## [0.1.0] — 2026-04-23 — "initial — offensive-only" (WITHHELD — see 0.1.1 above)
|
|
55
|
+
|
|
56
|
+
Initial ship. Multi-source package structure, offensive-only content
|
|
57
|
+
at v0.1.0.
|
|
58
|
+
|
|
59
|
+
### Added
|
|
60
|
+
|
|
61
|
+
- **Package scaffold** under `packages/skills/` with `@aegis-scan/skills`
|
|
62
|
+
as the npm name, MIT license, and `npm-provenance` publish-config.
|
|
63
|
+
No install-time lifecycle scripts (enforced by
|
|
64
|
+
`.github/workflows/publish-skills.yml` gate).
|
|
65
|
+
- **Multi-source directory layout** with four category-directories
|
|
66
|
+
under `skills/`:
|
|
67
|
+
- `offensive/` — populated at v0.1.0 with the 37-skill fork below.
|
|
68
|
+
- `defensive/` — placeholder README declaring skills-v0.2+ ambition
|
|
69
|
+
(AEGIS-native skills mirrored from the `@aegis-wizard/cli` pattern
|
|
70
|
+
library).
|
|
71
|
+
- `mitre-mapped/` — placeholder README declaring skills-v0.2+ ambition
|
|
72
|
+
(cherry-picks from an upstream framework-mapped source with MITRE
|
|
73
|
+
ATT&CK / D3FEND / NIST CSF mappings).
|
|
74
|
+
- `ops/` — placeholder README declaring skills-v0.3+ ambition
|
|
75
|
+
(incident-response, post-build-audit, verify-install-integrity).
|
|
76
|
+
- **37 offensive skills** forked from
|
|
77
|
+
[SnailSploit/Claude-Red](https://github.com/SnailSploit/Claude-Red)
|
|
78
|
+
at SHA `c74d53e2938b59f111572e0819265a1e73029393` under the upstream
|
|
79
|
+
MIT license. Upstream `Skills/offensive-<name>/SKILL.md` lands here
|
|
80
|
+
as `skills/offensive/snailsploit-fork/<name>/SKILL.md` (redundant
|
|
81
|
+
`offensive-` prefix stripped from directory names). Every file is
|
|
82
|
+
byte-identical to upstream after a prepended AEGIS-local HTML
|
|
83
|
+
attribution header.
|
|
84
|
+
- **`aegis-skills` CLI** with three subcommands: `list` (with
|
|
85
|
+
`--category` and `--source` filters), `info <skill-name>` (renders
|
|
86
|
+
frontmatter and upstream-source URL), and `install [--to <dir>]
|
|
87
|
+
[--force]` (defaults to `~/.claude/skills/user/aegis-skills/`).
|
|
88
|
+
- **ATTRIBUTION.md** with per-source attribution for the SnailSploit
|
|
89
|
+
fork plus forward-declared sections for defensive, MITRE-mapped,
|
|
90
|
+
and ops categories.
|
|
91
|
+
- **Test suite** — four vitest files covering manifest integrity,
|
|
92
|
+
frontmatter shape, attribution header preservation, and
|
|
93
|
+
internal-codename scrub-clean invariant across every shipped
|
|
94
|
+
skill. Total tests at v0.1.0 is 316 new cases; the full monorepo
|
|
95
|
+
test count rises from 2224 to 2540.
|
|
96
|
+
|
|
97
|
+
### Known discrepancies tracked for upstream-courtesy-ping
|
|
98
|
+
|
|
99
|
+
- Upstream README tabulates 38 skill rows but the `Skills/` directory
|
|
100
|
+
contains 37 subdirectories — the `patch-diffing` skill is listed in
|
|
101
|
+
the README "Infrastructure & Binary" table but the directory is
|
|
102
|
+
absent on disk at the fork SHA. This package ships what exists on
|
|
103
|
+
disk (37) rather than what is claimed in the README (38). Tracked
|
|
104
|
+
for an optional outreach to the upstream maintainer.
|
|
105
|
+
- Upstream uses two attribution conventions across its files — some
|
|
106
|
+
use an older `## Metadata > Source:` bullet, others use a newer
|
|
107
|
+
YAML-only frontmatter. Both conventions are preserved byte-
|
|
108
|
+
identically. AEGIS's own per-file provenance anchor is the
|
|
109
|
+
uniform `<!-- aegis-local: -->` HTML header applied during fork.
|
|
110
|
+
|
|
111
|
+
### Security posture
|
|
112
|
+
|
|
113
|
+
- Pre-fork security-pass (six protocol greps plus two supplementary
|
|
114
|
+
checks) run against upstream before commit. All checks returned
|
|
115
|
+
clean with three documented caveats (cloud-IMDS IPs in SSRF
|
|
116
|
+
content, canonical pedagogical shellcode, pedagogical AMSI/IAT-
|
|
117
|
+
hook code in the windows-boundaries skill). Log retained for
|
|
118
|
+
advisor audit.
|
|
119
|
+
- Markdown-only structural invariant enforced both locally and in
|
|
120
|
+
the `publish-skills.yml` CI gate: the `skills/` directory contains
|
|
121
|
+
only `.md` files.
|
|
122
|
+
- `SECURITY.md` at the repo root gains a "Responsible-use posture for
|
|
123
|
+
@aegis-scan/skills" section covering the authorized-use-only scope
|
|
124
|
+
of the offensive content.
|
|
125
|
+
|
|
126
|
+
### License
|
|
127
|
+
|
|
128
|
+
MIT for AEGIS side. MIT for upstream SnailSploit fork. See
|
|
129
|
+
`LICENSE` and `ATTRIBUTION.md`.
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 RideMatch1 (AEGIS) and upstream authors per ATTRIBUTION.md
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
# @aegis-scan/skills
|
|
2
|
+
|
|
3
|
+
Opt-in skill library for Claude Code and compatible AI agents. Third
|
|
4
|
+
sibling in the AEGIS full-repertoire institutional-grade security
|
|
5
|
+
toolkit.
|
|
6
|
+
|
|
7
|
+
## AEGIS is a three-layer toolkit
|
|
8
|
+
|
|
9
|
+
- **`@aegis-wizard/cli`** — scaffold + agent-brief generator. Builds
|
|
10
|
+
a secure Next.js + Supabase + shadcn SaaS from day one with an
|
|
11
|
+
agent-consumable Markdown brief.
|
|
12
|
+
- **`@aegis-scan/cli`** — defensive SAST scanner (five-package
|
|
13
|
+
family). Catches what the scanner knows to look for across your
|
|
14
|
+
built application.
|
|
15
|
+
- **`@aegis-scan/skills`** — this package. Red-team methodology
|
|
16
|
+
library (v0.1.0) with defensive, MITRE-mapped, and ops extensions
|
|
17
|
+
landing in later releases. Primes your AI coding-agent with
|
|
18
|
+
attack-class decision-trees so you can stress-test what you built
|
|
19
|
+
before shipping.
|
|
20
|
+
|
|
21
|
+
Build with the wizard. Scan what you built. Test it red-team-style.
|
|
22
|
+
Full lifecycle, one toolchain, one attribution-compliant open-source
|
|
23
|
+
license stack.
|
|
24
|
+
|
|
25
|
+
## Quickstart
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npm install -g @aegis-scan/skills
|
|
29
|
+
|
|
30
|
+
# Install every skill into Claude Code's user-skill directory
|
|
31
|
+
aegis-skills install
|
|
32
|
+
|
|
33
|
+
# List what is available
|
|
34
|
+
aegis-skills list
|
|
35
|
+
|
|
36
|
+
# Inspect a specific skill
|
|
37
|
+
aegis-skills info sqli
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
After `install` lands the skill files under `~/.claude/skills/user/aegis-skills/`,
|
|
41
|
+
Claude Code auto-loads each `SKILL.md` based on its trigger-phrases
|
|
42
|
+
whenever you invoke the agent with a relevant prompt.
|
|
43
|
+
|
|
44
|
+
## What ships in v0.1.0
|
|
45
|
+
|
|
46
|
+
Thirty-seven offensive-security SKILL.md files under
|
|
47
|
+
`skills/offensive/snailsploit-fork/`, covering:
|
|
48
|
+
|
|
49
|
+
- **Web application:** sqli · xss · ssrf · ssti · xxe · idor · file-upload
|
|
50
|
+
· rce · deserialization · race-condition · request-smuggling ·
|
|
51
|
+
open-redirect · parameter-pollution · graphql · waf-bypass (15)
|
|
52
|
+
- **Auth and identity:** jwt · oauth (2)
|
|
53
|
+
- **Infrastructure and binary:** shellcode · edr-evasion ·
|
|
54
|
+
exploit-development · exploit-dev-course · basic-exploitation ·
|
|
55
|
+
crash-analysis · mitigations · windows-mitigations ·
|
|
56
|
+
windows-boundaries · keylogger-arch · initial-access ·
|
|
57
|
+
advanced-redteam (12)
|
|
58
|
+
- **Reconnaissance and OSINT:** osint · osint-methodology (2)
|
|
59
|
+
- **Fuzzing and vulnerability research:** fuzzing · fuzzing-course ·
|
|
60
|
+
bug-identification · vuln-classes (4)
|
|
61
|
+
- **AI security:** ai-security (1)
|
|
62
|
+
- **Utility:** fast-checking (1)
|
|
63
|
+
|
|
64
|
+
All forked from
|
|
65
|
+
[SnailSploit/Claude-Red](https://github.com/SnailSploit/Claude-Red)
|
|
66
|
+
under MIT License with attribution preserved per-file. See
|
|
67
|
+
[`ATTRIBUTION.md`](./ATTRIBUTION.md) for the full credit chain.
|
|
68
|
+
|
|
69
|
+
## Multi-source architecture
|
|
70
|
+
|
|
71
|
+
`@aegis-scan/skills` is designed to grow across sources without
|
|
72
|
+
re-architecting the package. The `skills/` tree carries four
|
|
73
|
+
category-directories from day one, three of which are placeholders
|
|
74
|
+
for future content:
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
skills/
|
|
78
|
+
├── offensive/ — populated in v0.1.0
|
|
79
|
+
│ └── snailsploit-fork/
|
|
80
|
+
│ └── 37 SKILL.md files
|
|
81
|
+
├── defensive/ — placeholder for skills-v0.2+
|
|
82
|
+
├── mitre-mapped/ — placeholder for skills-v0.2+
|
|
83
|
+
└── ops/ — placeholder for skills-v0.3+
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
`aegis-skills list --category defensive` today returns an informative
|
|
87
|
+
"coming in v0.2+" message rather than a missing-directory error. When
|
|
88
|
+
future sources land, they slot into the existing tree and the manifest
|
|
89
|
+
metadata expands without layout churn.
|
|
90
|
+
|
|
91
|
+
## Structural invariant
|
|
92
|
+
|
|
93
|
+
The `skills/` directory is markdown-only by construction. No
|
|
94
|
+
executable content, no binaries, no install-time lifecycle scripts
|
|
95
|
+
anywhere in the package. The `publish-skills.yml` CI gate enforces
|
|
96
|
+
this structurally before every tag-push. A consumer running
|
|
97
|
+
`npm install @aegis-scan/skills` executes zero scripts from the
|
|
98
|
+
`@aegis-scan` namespace. See the top-level `SECURITY.md` for the
|
|
99
|
+
full supply-chain integrity posture.
|
|
100
|
+
|
|
101
|
+
## Responsible use
|
|
102
|
+
|
|
103
|
+
This package ships offensive-security methodology for authorized use
|
|
104
|
+
only:
|
|
105
|
+
|
|
106
|
+
- Authorized security testing of systems you own or have explicit
|
|
107
|
+
written permission to test.
|
|
108
|
+
- Bug-bounty engagements strictly within the defined scope.
|
|
109
|
+
- CTF competitions and educational environments.
|
|
110
|
+
- Defensive security research — understanding attack classes to
|
|
111
|
+
defend against them.
|
|
112
|
+
|
|
113
|
+
Use against systems you do not own or have permission to test is
|
|
114
|
+
unauthorized and likely illegal. AEGIS provides methodology;
|
|
115
|
+
responsible use is the operator's obligation. See the top-level
|
|
116
|
+
`SECURITY.md` for the full responsible-use disclosure and the
|
|
117
|
+
`SECURITY-INCIDENT-RESPONSE.md` for the abuse-report channel.
|
|
118
|
+
|
|
119
|
+
## License
|
|
120
|
+
|
|
121
|
+
MIT (see [`LICENSE`](./LICENSE)). Upstream skills ship under their
|
|
122
|
+
original licenses with attribution preserved per-file — see
|
|
123
|
+
[`ATTRIBUTION.md`](./ATTRIBUTION.md) for the full chain.
|
package/dist/bin.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":""}
|
package/dist/bin.js
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* `aegis-skills` CLI entry point.
|
|
4
|
+
*
|
|
5
|
+
* Three subcommands: `list` (browse the catalog), `info <name>`
|
|
6
|
+
* (inspect a single skill), `install [--to <dir>] [--force]` (copy
|
|
7
|
+
* the catalog into a Claude-Code-compatible skill directory).
|
|
8
|
+
*
|
|
9
|
+
* No third-party CLI parser — the surface is small enough that a
|
|
10
|
+
* hand-rolled argv walk keeps the runtime dependency footprint at
|
|
11
|
+
* zero, which matches the markdown-only structural invariant of the
|
|
12
|
+
* whole package: consumers installing `@aegis-scan/skills` pull in
|
|
13
|
+
* zero runtime code that executes on their machine beyond this bin.
|
|
14
|
+
*/
|
|
15
|
+
import { readFileSync } from 'node:fs';
|
|
16
|
+
import { dirname, join } from 'node:path';
|
|
17
|
+
import { fileURLToPath } from 'node:url';
|
|
18
|
+
import { runList } from './commands/list.js';
|
|
19
|
+
import { runInfo } from './commands/info.js';
|
|
20
|
+
import { runInstall } from './commands/install.js';
|
|
21
|
+
const HELP_TEXT = `aegis-skills — opt-in skill library for Claude Code and compatible AI agents
|
|
22
|
+
|
|
23
|
+
Usage:
|
|
24
|
+
aegis-skills list [--category <cat>] [--source <src>] [--json]
|
|
25
|
+
aegis-skills info <skill-name> [--json]
|
|
26
|
+
aegis-skills install [--to <dir>] [--force] [--dry-run]
|
|
27
|
+
aegis-skills --version
|
|
28
|
+
aegis-skills --help
|
|
29
|
+
|
|
30
|
+
Commands:
|
|
31
|
+
list Print the skill catalog grouped by category and source.
|
|
32
|
+
info Render one skill's metadata and upstream source URL.
|
|
33
|
+
install Copy every SKILL.md into a Claude-compatible skill directory.
|
|
34
|
+
Default target: ~/.claude/skills/user/aegis-skills/
|
|
35
|
+
|
|
36
|
+
List options:
|
|
37
|
+
--category <cat> Filter to offensive / defensive / mitre-mapped / ops / all
|
|
38
|
+
--source <src> Filter to one source-namespace (e.g. snailsploit-fork)
|
|
39
|
+
--json Machine-readable output
|
|
40
|
+
|
|
41
|
+
Info options:
|
|
42
|
+
--json Machine-readable output
|
|
43
|
+
|
|
44
|
+
Install options:
|
|
45
|
+
--to <dir> Target directory (overrides default)
|
|
46
|
+
--force Overwrite existing files at the target
|
|
47
|
+
--dry-run Print what would be copied without writing
|
|
48
|
+
`;
|
|
49
|
+
function readVersion() {
|
|
50
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
51
|
+
const pkgPath = join(here, '..', 'package.json');
|
|
52
|
+
const parsed = JSON.parse(readFileSync(pkgPath, 'utf-8'));
|
|
53
|
+
return parsed.version;
|
|
54
|
+
}
|
|
55
|
+
function main(argv) {
|
|
56
|
+
if (argv.length === 0 || argv[0] === '--help' || argv[0] === '-h') {
|
|
57
|
+
console.log(HELP_TEXT);
|
|
58
|
+
return 0;
|
|
59
|
+
}
|
|
60
|
+
if (argv[0] === '--version' || argv[0] === '-v') {
|
|
61
|
+
console.log(readVersion());
|
|
62
|
+
return 0;
|
|
63
|
+
}
|
|
64
|
+
const [command, ...rest] = argv;
|
|
65
|
+
switch (command) {
|
|
66
|
+
case 'list':
|
|
67
|
+
return runList(parseListOptions(rest));
|
|
68
|
+
case 'info':
|
|
69
|
+
return runInfo(rest[0] ?? '', parseInfoOptions(rest.slice(1)));
|
|
70
|
+
case 'install':
|
|
71
|
+
return runInstall(parseInstallOptions(rest));
|
|
72
|
+
default:
|
|
73
|
+
console.error(`Error: unknown command "${command}"`);
|
|
74
|
+
console.error('Run `aegis-skills --help` for usage.');
|
|
75
|
+
return 1;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
function parseListOptions(argv) {
|
|
79
|
+
const out = {};
|
|
80
|
+
for (let i = 0; i < argv.length; i += 1) {
|
|
81
|
+
const arg = argv[i];
|
|
82
|
+
if (arg === '--category' && i + 1 < argv.length) {
|
|
83
|
+
out.category = argv[i + 1];
|
|
84
|
+
i += 1;
|
|
85
|
+
}
|
|
86
|
+
else if (arg === '--source' && i + 1 < argv.length) {
|
|
87
|
+
out.source = argv[i + 1];
|
|
88
|
+
i += 1;
|
|
89
|
+
}
|
|
90
|
+
else if (arg === '--json') {
|
|
91
|
+
out.json = true;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return out;
|
|
95
|
+
}
|
|
96
|
+
function parseInfoOptions(argv) {
|
|
97
|
+
const out = {};
|
|
98
|
+
for (const arg of argv) {
|
|
99
|
+
if (arg === '--json')
|
|
100
|
+
out.json = true;
|
|
101
|
+
}
|
|
102
|
+
return out;
|
|
103
|
+
}
|
|
104
|
+
function parseInstallOptions(argv) {
|
|
105
|
+
const out = {};
|
|
106
|
+
for (let i = 0; i < argv.length; i += 1) {
|
|
107
|
+
const arg = argv[i];
|
|
108
|
+
if (arg === '--to' && i + 1 < argv.length) {
|
|
109
|
+
out.to = argv[i + 1];
|
|
110
|
+
i += 1;
|
|
111
|
+
}
|
|
112
|
+
else if (arg === '--force' || arg === '-f') {
|
|
113
|
+
out.force = true;
|
|
114
|
+
}
|
|
115
|
+
else if (arg === '--dry-run') {
|
|
116
|
+
out.dryRun = true;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return out;
|
|
120
|
+
}
|
|
121
|
+
process.exit(main(process.argv.slice(2)));
|
|
122
|
+
//# sourceMappingURL=bin.js.map
|
package/dist/bin.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../src/commands/info.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,MAAM,CAqDxE"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `aegis-skills info <skill-name>` — render one skill's metadata.
|
|
3
|
+
*
|
|
4
|
+
* The argument matches by leaf `name` (e.g. `sqli`) or full `id` (e.g.
|
|
5
|
+
* `offensive-snailsploit-fork-sqli`). Returns exit 0 on found, exit 1
|
|
6
|
+
* on not-found, exit 2 on loader error.
|
|
7
|
+
*/
|
|
8
|
+
import { loadAllSkills } from '../skills-loader.js';
|
|
9
|
+
export function runInfo(query, options = {}) {
|
|
10
|
+
if (!query || query.trim().length === 0) {
|
|
11
|
+
console.error('Error: aegis-skills info requires a skill-name argument');
|
|
12
|
+
return 1;
|
|
13
|
+
}
|
|
14
|
+
let skills;
|
|
15
|
+
try {
|
|
16
|
+
skills = loadAllSkills();
|
|
17
|
+
}
|
|
18
|
+
catch (err) {
|
|
19
|
+
console.error(`Error: ${err.message}`);
|
|
20
|
+
return 2;
|
|
21
|
+
}
|
|
22
|
+
const needle = query.trim().toLowerCase();
|
|
23
|
+
const matches = skills.filter((s) => s.name.toLowerCase() === needle || s.id.toLowerCase() === needle);
|
|
24
|
+
if (matches.length === 0) {
|
|
25
|
+
console.error(`Error: no skill found matching "${query}"`);
|
|
26
|
+
console.error('Run `aegis-skills list` to see the available catalog.');
|
|
27
|
+
return 1;
|
|
28
|
+
}
|
|
29
|
+
if (matches.length > 1) {
|
|
30
|
+
console.error(`Error: "${query}" is ambiguous — matches:`);
|
|
31
|
+
for (const m of matches)
|
|
32
|
+
console.error(` ${m.id}`);
|
|
33
|
+
console.error('Use the full id (e.g. offensive-snailsploit-fork-<name>) to disambiguate.');
|
|
34
|
+
return 1;
|
|
35
|
+
}
|
|
36
|
+
const skill = matches[0];
|
|
37
|
+
if (options.json) {
|
|
38
|
+
process.stdout.write(JSON.stringify(skill, null, 2) + '\n');
|
|
39
|
+
return 0;
|
|
40
|
+
}
|
|
41
|
+
console.log(`# ${skill.title}`);
|
|
42
|
+
console.log('');
|
|
43
|
+
console.log(`id: ${skill.id}`);
|
|
44
|
+
console.log(`category: ${skill.category}`);
|
|
45
|
+
console.log(`source: ${skill.source || '(none)'}`);
|
|
46
|
+
console.log(`name: ${skill.name}`);
|
|
47
|
+
console.log(`relativePath: ${skill.relativePath}`);
|
|
48
|
+
if (skill.upstreamSourceUrl) {
|
|
49
|
+
console.log(`upstream: ${skill.upstreamSourceUrl}`);
|
|
50
|
+
}
|
|
51
|
+
console.log('');
|
|
52
|
+
console.log('Description:');
|
|
53
|
+
console.log(wrap(skill.description || '(no description extracted)', 78, ' '));
|
|
54
|
+
console.log('');
|
|
55
|
+
console.log(`File on disk: ${skill.absolutePath}`);
|
|
56
|
+
return 0;
|
|
57
|
+
}
|
|
58
|
+
function wrap(text, width, indent) {
|
|
59
|
+
const words = text.split(/\s+/).filter(Boolean);
|
|
60
|
+
const lines = [];
|
|
61
|
+
let line = indent;
|
|
62
|
+
for (const word of words) {
|
|
63
|
+
if ((line.length + word.length + 1) > width && line.trim().length > 0) {
|
|
64
|
+
lines.push(line);
|
|
65
|
+
line = indent + word;
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
line = line.trim().length === 0 ? `${indent}${word}` : `${line} ${word}`;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
if (line.trim().length > 0)
|
|
72
|
+
lines.push(line);
|
|
73
|
+
return lines.join('\n');
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=info.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/commands/info.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AA0BA,MAAM,WAAW,cAAc;IAC7B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,UAAU,CAAC,OAAO,GAAE,cAAmB,GAAG,MAAM,CA6D/D"}
|