7 Commits
Author SHA1 Message Date
Wen 3906ba98f3 fix(opensource-pipeline): commit packaging and sanitizer fixes before publishing
The forker makes the only commit before the sanitizer and packager run,
and Step 7 publishes with `gh repo create --source=. --push`, which sends
commits, not the working tree. Packager output (LICENSE, README, CLAUDE.md,
setup.sh) never reached the public repo, and a secret the sanitizer caught
and the agent fixed in the working tree was still pushed in that commit.

- Fold sanitizer fixes and packager output into the single commit with
  `git commit --amend`, keeping FORK_REPORT.md and SANITIZATION_REPORT.md
  out through .git/info/exclude.
- Re-run the sanitizer after packaging (Step 5b) and refuse to push with
  uncommitted changes or more than one commit.
- Sanitizer Step 6 now runs the Step 1 secret patterns and Step 3 home
  path patterns over `git log -p --all`, not only a 4-keyword grep.

Signed-off-by: Wen <jwcastillo@gmail.com>
(cherry picked from commit fe767e2099)
2026-10-20 18:01:43 -04:00
haelyra a4bf7a45ca fix(sanitizer): integrate unreadable audit with portable filename quoting 2026-10-10 17:36:33 -04:00
D. Michael Piscitelli b10ed932e6 fix(agents): flag a failed signature read and a missing tally
A signature read that failed after one byte looked like a one-byte text
file and was skipped. The pipeline now runs under pipefail, so the file is
listed as unverified instead.

When cut, sort or uniq is missing, Step 7 says the tally is unavailable.
The count does not depend on them.
2026-10-04 08:04:07 +02:00
D. Michael Piscitelli 39450c9be2 fix(agents): list files the sanitizer cannot read
Step 1 skipped binaries while the role promised to verify the whole project,
so a credential in a spreadsheet, a PDF or an embedded database got a clean
PASS and never showed up in the report.

Step 7 now lists every file that doesn't read as text, plus any directory it
can't enter, and the pipeline stops on that list until a person confirms. On
this repo that's a few dozen files, all images and video, which is why they're
warnings and not failures. It doesn't try to extract or scan them: that needs
nested-archive recursion and size bounds, and I'd rather list a file than
half-scan it.

Detection is a first-byte signature check plus a whole-file NUL/control-byte
test, with file(1) only widening the list. If a detector fails, the file is
listed as unverified.

Filenames are untrusted, so Step 7 writes the paths to a manifest beside the
project directory, for a person to open, and keeps them out of its stdout
and its report section. Beside and not inside, so a re-run's text scans
can't read it back. The script prints the count itself as its last line. A
scan problem, a failed write, a walk that dies early or a run that never
reaches that line gives an unknown count, and the gate treats unknown as a
stop, not as zero.

Step 1 no longer skips *.min.js.

Tests in tests/skills/sanitizer-unreadable.test.js. Editing SKILL.md changes
the skill registry digest, so skill-triggers@1.json carries the new value.
2026-10-04 07:30:24 +02:00
Affaan Mustafa 6a9f075cd9 fix: use scalar Claude agent tools (#2583)
Normalize scalar Claude agent tool metadata across validators, adapters, dashboards, and generated surfaces with regression coverage.
2026-07-26 03:20:15 -07:00
Affaan Mustafa 393d397efa docs: add prompt defense baselines
Add compact prompt-defense baselines to active ECC prompt surfaces and copied CLAUDE examples. AgentShield prompt-defense findings are now zero; local tests passed 2366/2366.
2026-05-12 22:22:57 -04:00
Michael PiscitelliandClaude Sonnet 4.6 477d23a34f feat(agents,skills): add opensource-pipeline — 3-agent workflow for safe public releases (#1036)
* feat(agents,skills): add opensource-pipeline — 3-agent open-source release workflow

Adds a complete pipeline for safely preparing private projects for public
release: secret stripping (20+ patterns), independent sanitization audit,
and professional doc generation (CLAUDE.md, setup.sh, README, LICENSE).

Agents added:
- agents/opensource-forker.md    — copies project, strips secrets, generates .env.example
- agents/opensource-sanitizer.md — independent PASS/FAIL audit, read-only, 20+ patterns
- agents/opensource-packager.md  — generates CLAUDE.md, setup.sh, README, LICENSE, CONTRIBUTING

Skill added:
- skills/opensource-pipeline/SKILL.md — orchestrator: routes /opensource commands, chains agents

Source: https://github.com/herakles-dev/opensource-pipeline (MIT)

* fix: address P1/P2 review findings from Cubic, CodeRabbit, and Greptile

- Collect GitHub org/username in Step 1, use quoted vars in publish command
- Add 3-attempt retry cap on sanitizer FAIL loop
- Use dynamic sanitization verdict in final review output
- Broaden rsync exclusions: .env*, .claude/, .secrets/, secrets/
- Fix JWT regex to match full 3-segment tokens (header.payload.signature)
- Broaden GitHub token regex to cover gho_, ghu_ prefixes
- Fix AWS regex to be case-insensitive, match env var formats
- Tighten generic env regex: increase min length to 16, add non-secret lookaheads
- Separate heuristic WARNING patterns from CRITICAL patterns in sanitizer
- Broaden internal path detection: macOS /Users/, Windows C:\Users\
- Clarify sanitizer is source-read-only (report writing is allowed)

* fix: flag *.map files as dangerous instead of skipping them

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-31 14:06:23 -07:00