aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--AGENTS.md280
-rw-r--r--CLAUDE.md201
-rw-r--r--README.md4
3 files changed, 482 insertions, 3 deletions
diff --git a/AGENTS.md b/AGENTS.md
new file mode 100644
index 0000000..4623c18
--- /dev/null
+++ b/AGENTS.md
@@ -0,0 +1,280 @@
+# Agent Instructions — Slackware Pentesting Suite
+
+This file governs how AI agents must behave in this repository.
+**Read it in full before taking any action.**
+
+---
+
+## Core Rules
+
+1. **Ask before acting.** If anything about the task is ambiguous — target
+ version, which package, which build strategy — stop and ask. Do not infer
+ intent and proceed.
+2. **Use available skills.** For git operations, commits, PRs, and any task
+ covered by a skill, invoke the relevant skill. Do not improvise a workflow
+ that a skill already defines.
+3. **One package per task.** Never modify multiple packages in a single
+ operation unless explicitly instructed.
+4. **Never skip lint.** Every change must pass `sbolint` before committing.
+ No exceptions.
+5. **Never commit without being asked.** Complete all file edits and
+ verification steps, then wait for explicit instruction to commit.
+
+---
+
+## Repository Layout
+
+Each package lives in its own top-level subfolder:
+
+```
+<package-name>/
+├── <package-name>.SlackBuild # Main build script
+├── <package-name>.info # Metadata (version, checksums, download URL)
+├── README # Description and usage notes
+├── slack-desc # 11-line package description
+├── <package-name>.desktop # (optional) Desktop entry for GUI apps
+├── doinst.sh # (optional) Post-install script
+├── rc.<daemon> # (optional) Init script for daemon packages
+├── patches/ # (optional) Patch directory
+│ ├── series # (optional) Ordered patch list
+│ └── *.patch
+└── [...] # Other optional files
+```
+
+---
+
+## Package Build Strategies
+
+Before updating or adding a package, identify which build strategy it uses:
+
+| Strategy | Examples | Key indicator |
+|----------|----------|---------------|
+| Go source | ffuf, gobuster, nuclei | `go build`, `REQUIRES="google-go-lang"` |
+| Autotools/cmake source | hydra, cadaver | `./configure` or `cmake` |
+| Binary repack (.deb) | metasploit-framework | `ar p … data.tar.gz \| tar xzv` |
+| Binary repack (.rpm) | nessus | `rpm2cpio … \| cpio -idmv` |
+| Data archive | SecLists, exploitdb, webshells, windows-binaries | no compilation |
+
+The update workflow below applies to all strategies. Differences are called
+out at each step.
+
+---
+
+## Mandatory Workflow: Updating a Package Version
+
+Follow these steps in order. Do not skip or reorder them.
+
+### Step 1 — Identify the build strategy
+
+Read `<package-name>/<package-name>.SlackBuild` to determine which strategy
+the package uses (see table above). This affects how the download URL and
+checksum are handled.
+
+### Step 2 — Update version strings
+
+Edit **both** of the following files, changing the old version to the new one:
+
+- `<package-name>/<package-name>.SlackBuild` — change `VERSION=${VERSION:-<old>}` to the new value
+- `<package-name>/<package-name>.info` — change `VERSION=`, `DOWNLOAD=`
+ (or `DOWNLOAD_x86_64=`), and the corresponding `MD5SUM=` / `MD5SUM_x86_64=`
+
+For the download URL, substitute the new version into the existing URL pattern.
+Set the checksum field to `"placeholder"` — it will be fixed in the next step.
+
+**Binary repack packages:** the download URL typically contains a timestamp or
+build ID embedded by upstream (e.g. Rapid7's `.deb` filenames). Confirm the
+exact URL for the new version before editing.
+
+### Step 3 — Fix the checksum
+
+Run `sbofixinfo` from inside the package directory:
+
+```bash
+cd <package-name> && sbofixinfo
+```
+
+If `sbofixinfo` reports no changes (common when the checksum is a placeholder),
+use the two-pass `sbodl` procedure instead:
+
+```bash
+# Pass 1 — downloads the source; fails because MD5SUM is wrong/placeholder
+cd <package-name> && sbodl
+
+# Compute the real checksum from the downloaded file
+md5sum <downloaded-file> # adjust filename as needed
+
+# Update the MD5SUM (or MD5SUM_x86_64) in the .info file
+
+# Pass 2 — verifies the checksum; must report "md5sum matches OK"
+cd <package-name> && sbodl
+```
+
+Do not proceed past this step until `sbodl` reports `md5sum matches OK`.
+
+**Binary repack packages:** if `sbodl` cannot download the file automatically
+(e.g. Nessus requires a browser session), download it manually, place it in
+the package directory, compute `md5sum <file>`, update the `.info` file, then
+run `sbodl` for the verification pass.
+
+### Step 4 — Lint
+
+```bash
+cd <package-name> && sbolint
+```
+
+`sbolint` must report no errors. Fix any issues before continuing.
+
+### Step 5 — Report and wait
+
+Present a summary of all changes made and wait for the user to instruct you
+to commit.
+
+---
+
+## Mandatory Workflow: Adding a New Package
+
+Before creating any files, ask the user for:
+
+- The exact `PRGNAM` (package name)
+- The upstream source URL and version
+- The build strategy (source / binary repack / data archive)
+- Any non-SBo runtime dependencies
+
+Then proceed:
+
+1. Create the package directory with all required files:
+ `<prgnam>.SlackBuild`, `<prgnam>.info`, `README`, `slack-desc`
+2. Choose the correct build strategy and follow the scripting rules below.
+3. Run `sbofixinfo`, then `sbodl` (two-pass if needed), then `sbolint`.
+4. Report results and wait for commit instruction.
+
+---
+
+## SlackBuild Scripting Rules
+
+- Base all scripts on the SBo template: https://slackbuilds.org/templates/
+- Use `set -e` (abort on error).
+- Honor `$TMP`, `$BUILD`, `$TAG`, `$OUTPUT`; provide defaults if unset.
+- Detect `$ARCH` and set `SLKCFLAGS` and `LIBDIRSUFFIX` accordingly.
+- Strip ELF binaries and shared objects (skip for pure data packages).
+- Install docs to `/usr/doc/$PRGNAM-$VERSION/`.
+- Always include the `find -L` + `chown`/`chmod` cleanup block before packaging.
+- Build the package with `makepkg -l y -c n`.
+
+### Go source builds
+
+```bash
+export CGO_CPPFLAGS="$SLKCFLAGS"
+export CGO_CFLAGS="$SLKCFLAGS"
+export CGO_CXXFLAGS="$SLKCFLAGS"
+export GOPATH="$(pwd)/.gocache"
+export GOPROXY="https://proxy.golang.org,direct"
+export GOFLAGS="-mod=readonly -buildmode=pie -trimpath -modcacherw"
+LIB_LDFLAGS="-linkmode=external -s -w"
+
+go build -ldflags="$LIB_LDFLAGS" -o "$PKG"/usr/bin/ ./...
+
+# Clean up the Go module cache before packaging
+rm -rf "$GOPATH"
+```
+
+### Binary repack from `.deb`
+
+```bash
+# x86_64 only — exit with error for other arches
+if [ "$ARCH" != "x86_64" ]; then
+ echo "Sorry, $PRGNAM binaries are available for x86_64 only."
+ exit 1
+fi
+
+ar p $CWD/${PRGNAM}_${VERSION}*.deb data.tar.gz | tar xzv
+```
+
+Use `DOWNLOAD="UNSUPPORTED"` and `DOWNLOAD_x86_64="<url>"` in the `.info` file.
+
+### Binary repack from `.rpm`
+
+```bash
+rpm2cpio $CWD/${PRGNAM}-${VERSION}*.rpm | cpio -idmv
+```
+
+Use `DOWNLOAD="UNSUPPORTED"` and `DOWNLOAD_x86_64="<url>"` in the `.info` file.
+
+### Patch support
+
+When patches are needed, store them in `patches/` and apply with:
+
+```bash
+if compgen -G "$CWD/patches/*.patch" > /dev/null; then
+ if [ -f "$CWD/patches/series" ]; then
+ while IFS= read -r PATCH; do
+ [ -z "$PATCH" ] && continue
+ [ "${PATCH#\#}" != "$PATCH" ] && continue
+ patch -p1 -i "$CWD/patches/$PATCH"
+ done < "$CWD/patches/series"
+ else
+ for PATCH in "$CWD"/patches/*.patch; do
+ patch -p1 -i "$PATCH"
+ done
+ fi
+fi
+```
+
+### `.info` file — required fields
+
+```
+PRGNAM="..."
+VERSION="..."
+HOMEPAGE="..."
+DOWNLOAD="..."
+MD5SUM="..."
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="danix"
+EMAIL="danix@danix.xyz"
+```
+
+- Use `DOWNLOAD="UNSUPPORTED"` when no 32-bit download exists.
+- For packages originally authored by others (e.g. Nessus), preserve the
+ original `MAINTAINER` and `EMAIL` — do not overwrite with danix's details.
+
+### `slack-desc` rules
+
+- Exactly 11 lines, each prefixed with `package-name: `.
+- Line 1: `package-name: package-name (short one-liner description)`
+- Lines 2–11: prose description; blank lines use `package-name:` only.
+- Do not include the ruler line in the committed file.
+
+---
+
+## Git Operations
+
+**Use the commit skill for all commits.** Do not run `git commit` manually.
+
+**Remove symlinks before staging.** `sbodl` creates symlinks in the package
+directory pointing to downloaded source archives. These must never be committed
+to git. Before any `git add`, run from the repo root:
+
+```bash
+find . -type l -delete
+```
+
+Commit conventions:
+- One commit per package add or update.
+- Message format:
+ - Add: `<package-name>: add version X.Y.Z`
+ - Update: `<package-name>: update to X.Y.Z`
+ - Fix: `<package-name>: fix <short description>`
+
+---
+
+## What Requires User Confirmation
+
+Stop and ask before doing any of the following:
+
+- Committing or pushing changes
+- Modifying files in more than one package directory
+- Deleting any file
+- Bypassing the pre-commit hook (`SBOLINT=no`)
+- Any action not covered by the workflows above
diff --git a/CLAUDE.md b/CLAUDE.md
new file mode 100644
index 0000000..8e29936
--- /dev/null
+++ b/CLAUDE.md
@@ -0,0 +1,201 @@
+# Slackware Pentesting Suite
+
+A curated collection of penetration testing tools packaged as SlackBuilds for
+Slackware GNU/Linux, following [SlackBuilds.org (SBo)](https://slackbuilds.org)
+conventions where applicable.
+
+---
+
+## Repo Structure
+
+Each package lives in its own top-level subfolder:
+
+```
+<package-name>/
+├── <package-name>.SlackBuild # Main build script
+├── <package-name>.info # Metadata (version, checksums, URLs)
+├── README # Description and usage notes
+├── slack-desc # Package description (11-line format)
+├── <package-name>.desktop # (optional) Desktop entry for GUI apps
+├── doinst.sh # (optional) Post-install script
+├── rc.<daemon> # (optional) Init script for daemon packages
+├── patches/ # (optional) Patch directory for source builds
+│ ├── series # (optional) Ordered patch list
+│ └── *.patch
+└── [...] # Other optional files (man pages, completions, etc.)
+```
+
+---
+
+## Build Strategies
+
+Packages in this repo fall into several categories — the SlackBuild style
+differs accordingly.
+
+### 1. Source builds (Go)
+
+Packages such as `ffuf`, `gobuster`, `nuclei` are built from upstream source
+tarballs using `go build`. Key points:
+
+- Set `GOPATH`, `GOPROXY`, `GOFLAGS` before building
+- Use `-buildmode=pie -trimpath -mod=readonly -modcacherw`
+- Strip ELF binaries after build
+- Clean up `$GOPATH` / Go module cache before packaging
+- `REQUIRES="google-go-lang"` in the `.info` file
+
+### 2. Source builds (autotools / cmake)
+
+Packages such as `hydra`, `cadaver` are built from source using `./configure`
+or `cmake`. Follow standard SBo template conventions.
+
+### 3. Binary repacks — Debian `.deb`
+
+Packages such as `metasploit-framework` are repacked from upstream `.deb`
+archives:
+
+- Extract with: `ar p <file>.deb data.tar.gz | tar xzv`
+- Set `DOWNLOAD="UNSUPPORTED"` and use `DOWNLOAD_x86_64` / `MD5SUM_x86_64`
+- These packages are x86_64 only; exit with an error for other arches
+- Strip ELF binaries after extraction
+
+### 4. Binary repacks — RPM
+
+Packages such as `nessus` are repacked from upstream `.rpm` archives:
+
+- Extract with: `rpm2cpio <file>.rpm | cpio -idmv`
+- Set `DOWNLOAD="UNSUPPORTED"` and use `DOWNLOAD_x86_64` / `MD5SUM_x86_64`
+
+### 5. Data / archive packages
+
+Packages such as `SecLists`, `exploitdb`, `webshells`, `windows-binaries`
+install data files rather than compiled binaries. No stripping needed.
+
+---
+
+## SlackBuild Scripting Guidelines
+
+- Follow the [SBo template](https://slackbuilds.org/templates/) as the base
+- Use `set -e` to abort on errors
+- Honor `$TMP`, `$BUILD`, `$TAG`, `$OUTPUT`; provide defaults if unset
+- Use `$ARCH` detection with proper `SLKCFLAGS` and `LIBDIRSUFFIX`
+- Strip binaries and libraries unless the package type makes it irrelevant
+- Install docs to `/usr/doc/$PRGNAM-$VERSION/`
+- Always include `find -L` + `chown`/`chmod` cleanup block before packaging
+- Use `makepkg -l y -c n` to create the final package
+
+### Patch support
+
+When upstream patches are needed, store them in `patches/` and apply via:
+
+```bash
+if compgen -G "$CWD/patches/*.patch" > /dev/null; then
+ if [ -f "$CWD/patches/series" ]; then
+ while IFS= read -r PATCH; do
+ [ -z "$PATCH" ] && continue
+ [ "${PATCH#\#}" != "$PATCH" ] && continue
+ patch -p1 -i "$CWD/patches/$PATCH"
+ done < "$CWD/patches/series"
+ else
+ for PATCH in "$CWD"/patches/*.patch; do
+ patch -p1 -i "$PATCH"
+ done
+ fi
+fi
+```
+
+---
+
+## `.info` File
+
+Must contain:
+
+```
+PRGNAM="..."
+VERSION="..."
+HOMEPAGE="..."
+DOWNLOAD="..."
+MD5SUM="..."
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="danix"
+EMAIL="danix@danix.xyz"
+```
+
+- Use `DOWNLOAD="UNSUPPORTED"` when no 32-bit source exists
+- Use `DOWNLOAD_x86_64` / `MD5SUM_x86_64` for architecture-specific downloads
+- Checksums must match the exact source archive
+- `REQUIRES=""` if no SBo dependencies; list space-separated SBo names otherwise
+- For packages originally authored by others (e.g. Nessus), preserve the
+ original `MAINTAINER` and `EMAIL` values
+
+---
+
+## `slack-desc`
+
+- Exactly 11 lines in the `package-name: description` format
+- First line: `package-name: package-name (short one-liner)`
+- Lines 2–11: description; blank lines use `package-name:` with nothing after
+- Do not include the ruler line in the committed file
+
+---
+
+## Tooling: sbo-maintainer-tools
+
+Source: https://slackware.uk/~urchlay/repos/sbo-maintainer-tools
+
+| Tool | Purpose |
+|------|---------|
+| `sbolint` | Lint `.SlackBuild`, `README`, `.info`, `slack-desc` |
+| `sbopkglint` | Lint the built package |
+| `sbofixinfo` | Auto-fix common `.info` file issues |
+| `sbodl` | Download sources and verify `MD5SUM`/`SHA256SUM` from `.info` |
+
+### Workflow per package
+
+```bash
+# 1. Fix any .info issues automatically
+cd <package-name> && sbofixinfo
+
+# 2. Download sources and verify checksums
+# NOTE: when updating to a new version, sbodl will download the source but fail
+# because the .info file still has the old (or placeholder) MD5SUM. In that case:
+# a) compute the checksum manually: md5sum <source-file>
+# b) update MD5SUM in the .info file
+# c) run sbodl again — it should now report "md5sum matches OK"
+cd <package-name> && sbodl
+
+# 3. Lint the script and metadata
+cd <package-name> && sbolint
+
+# 4. Build the package
+cd <package-name> && sudo bash <package-name>.SlackBuild
+
+# 5. Lint the built package
+cd <package-name> && sbopkglint
+
+# 6. Remove symlinks created by sbodl before staging
+# sbodl creates symlinks in the package directory pointing to downloaded sources.
+# These must never be committed to git.
+find . -type l -delete
+
+# 7. Commit
+git add <package-name>/
+git commit -m'<package-name>: add version X.Y.Z'
+```
+
+---
+
+## Commit Conventions
+
+- One commit per package add/update
+- Commit message format:
+ - Add: `<package-name>: add version X.Y.Z`
+ - Update: `<package-name>: update to X.Y.Z`
+ - Fix: `<package-name>: fix <short description>`
+
+---
+
+## Maintainer
+
+danix — danix@danix.xyz
diff --git a/README.md b/README.md
index de30849..aecea90 100644
--- a/README.md
+++ b/README.md
@@ -30,7 +30,7 @@ This list is ever growing, if you want to ask for a package to be prioritized, j
| cadaver | ✅ | [notroj/cadaver](https://notroj.github.io/cadaver/) | 0.28 |
| powershell | ✅ | [microsoft.com](https://www.microsoft.com/powershell/) | 7.6.0 |
| Nessus | ✅ | [tenable.com](https://www.tenable.com/downloads/nessus) | 10.11.3 |
-| nuclei | ❎ | [projectdiscovery/nuclei](https://github.com/projectdiscovery/nuclei) | 3.7.1 |
+| nuclei | ✅ | [projectdiscovery/nuclei](https://github.com/projectdiscovery/nuclei) | 3.7.1 |
| windows binaries | ❎ | [kali.org](https://www.kali.org/tools/windows-binaries/) | 0.6.10 |
| webshells | ❎ | [kali.org](https://www.kali.org/tools/webshells/) | 1.1 |
| metasploit framework | ❎ | [metasploit.com](https://www.metasploit.com/) | 6.4.124 |
@@ -43,8 +43,6 @@ This list is ever growing, if you want to ask for a package to be prioritized, j
>
> There's a metasploit package on slackbuilds.org but is an older version (last updated in 2022). I'll contact the mantainer and ask to transfer it to me and I'll update it.
>
-> The hydra package on slackbuilds.org refers to version 9.4 and doesn't build anymore on Slackware64-current (as of today 17/03/2026), so I have reported here the build scripts with the updated source for version 9.6
->
> The cadaver package is available on slackbuilds.org but it's for an older version. I've reported here the script and built the newest version. The slackbuild includes now a pull from the [notroj/neon](https://github.com/notroj/neon) repository which is usually not allowed for SlackBuilds that are uploaded to slackbuilds.org
>
> The Powershell package is the same as the one on slackbuilds.org but builds the latest version available.