Open-Source Release — Edho Ferdian Mode
SkillDev toolsFork, sanitize, and package a project for open-source release in three phases, extract secrets into .env.example rather than deleting them, run an independent adversarial audit that never trusts the fork phase's own report (PASS/FAIL/PASS-WITH-WARNINGS, hard-gates packaging on FAIL), then generate CLAUDE.md/README/LICENSE/CONTRIBUTING/issue-templates. Use when the user wants to open-source a project, says "mau open-source-kan ini", "siapkan repo ini buat publik", "audit sebelum rilis publik", or "cek apakah aman di-publish".
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; ahel provides instructions and does not run this skill.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the Open-Source Release skill
What this skill tells your AI
The instructions your AI receives, as published by edhoferdian/eef in skills/opensource-release-edho-ferdian/SKILL.md and read by ahel’s review.
You are running a three-phase release pipeline: fork/prep, then an independent adversarial sanitization audit, then packaging. The three phases are separated on purpose — a project is not safe to publish because the person who sanitized it says so; it's safe because someone who didn't do the sanitizing re-checked it from scratch and found nothing.
Language routing (fixed — see skill-authoring-edho-ferdian's canonical contract)
- Communication to the user → Bahasa Indonesia.
- Report files (
FORK_REPORT.md,SANITIZATION_REPORT.md, generatedCLAUDE.md/README.md/etc.) → English, matching the base rule's artifact clause. - The Phase 2 PASS-WITH-WARNINGS confirmation prompt to the user is always
in Bahasa Indonesia (see below) — this is a deliberate exception spelled
out in
references/sanitize-audit.md, not an inconsistency. Full contract:skill-authoring-edho-ferdian§7.
Phase flow
Phase 1 Fork / Prep → references/fork-prep.md
Copy to staging, detect + extract secrets
into .env.example, replace internal refs,
fresh git history, write FORK_REPORT.md.
Phase 2 Sanitize / Audit → references/sanitize-audit.md
Independent adversarial re-scan. Does not
trust FORK_REPORT.md. Verdict: PASS / FAIL /
PASS-WITH-WARNINGS. Writes
SANITIZATION_REPORT.md.
Phase 3 Package → references/packaging-templates.md
CLAUDE.md (this ecosystem's Execution
Context Pack format, <100 lines),
setup.sh, README.md, LICENSE, CONTRIBUTING.md,
GitHub issue templates.
Shared reference used by both Phase 1 and Phase 2:
references/secret-patterns.md — the single source of truth for every
secret/PII regex and the internal-reference replacement map. Neither phase
keeps its own inline copy; both read this file. If you ever find yourself
about to write a regex pattern inline in Phase 1 or Phase 2's instructions,
stop — it belongs in secret-patterns.md instead, edited once.
The hard gate — read this before starting Phase 3
Phase 3 cannot start while Phase 2's verdict is FAIL. This is not a
recommendation, it's a hard stop: no CLAUDE.md, no README.md, nothing
gets generated for a project Phase 2 rejected. Send the project back to
Phase 1 with the specific findings, let Phase 1 fix them, then re-run Phase
2 in full, from Step 1 — a partial re-audit against only the previously
failing items is not sufficient, because a fix to one file can introduce or
reveal something a full re-scan would catch and a targeted one wouldn't.
PASS-WITH-WARNINGS requires an explicit user decision before Phase 3
proceeds. Do not silently treat a WARNING verdict as good enough to move
on. Present the warning list in Bahasa Indonesia (template and full
reasoning in references/sanitize-audit.md) and get an explicit yes/no —
either "lanjut dengan status ini" or "perbaiki dulu." Record whichever
answer you get:
- If this release is happening inside a
dev-kickoff-edho-ferdian-managed project (a/project-memory/directory exists), write the decision to that project'sproject-memory/01-decision-register.md— source: this conversation, date, and the specific warnings accepted or the fix requested. - Otherwise (a standalone, one-off release with no dev-kickoff project
context), record the decision inline in
SANITIZATION_REPORT.md's own verdict section instead. Never proceed on a WARNING without some durable record of who accepted the risk and why — a chat message alone disappears; a file doesn't.
PASS needs no confirmation — proceed straight to Phase 3.
This skill's Critique-Correction Loop instance
Phase 1 → Phase 2 is this ecosystem's Critique-Correction Loop pattern
(the same shape code-review-edho-ferdian uses between its Reviewer and
Critic roles — see that skill's references/reflection-critique.md),
applied to a release pipeline instead of a code review:
- Phase 1 is the Producer — it claims what it stripped and extracted,
and writes
FORK_REPORT.mdas its own account. - Phase 2 is the adversarial Verifier — it never opens
FORK_REPORT.mdto decide what to scan. It re-derives every finding from the filesystem and git history directly, then optionally compares its independent findings against Phase 1's claims (a mismatch is itself a finding, not a contradiction to paper over).
On a harness with sub-agent delegation (Claude Code, OpenCode, Hermes
via its delegate_task template, ZCode's own Subagents), Phase 2 runs as
the opensource-sanitizer-edho-ferdian agent, delegated fresh after Phase
1 completes — a real separate context, not just an instruction to
disregard what's already in view. "Never trust FORK_REPORT.md" is much
easier to actually honor when the verifier genuinely never saw it, versus
asking the same context that wrote it to pretend otherwise. On a harness
with no delegation primitive, run Phase 2 inline per
references/sanitize-audit.md, and note in SANITIZATION_REPORT.md that
the independence guarantee is weaker in that mode — still re-derive every
finding from scratch, just without hard context isolation backing it.
- A FAIL sends the actual file/history issue back to Phase 1's method,
never a patch applied directly by Phase 2 — Phase 2 stays read-only, full
stop, per its own rules in
references/sanitize-audit.md.
Full framing and the reasoning behind treating this as the same pattern
lives at the top of references/sanitize-audit.md — read it there rather
than duplicating it here.
Workflow
- Confirm scope with the user: source project path, target directory
for the sanitized copy, intended license (don't default silently — see
references/packaging-templates.mdStep 5), and whether a GitHub repo already exists (affects whether.github/ISSUE_TEMPLATE/gets created). - Run Phase 1 per
references/fork-prep.md. Report file counts, secrets extracted, and internal references replaced. State plainly that this report is not the release gate. - Run Phase 2 — delegate to
opensource-sanitizer-edho-ferdianon a harness that supports it, else runreferences/sanitize-audit.mdinline — unconditionally, on the staged copy, regardless of how confident Phase 1's own report sounded. Get a verdict. - Apply the hard gate above based on the verdict.
- Run Phase 3 per
references/packaging-templates.mdonce cleared. Report every file generated or enhanced, withsetup.shconfirmed executable. - Final summary to the user (Bahasa Indonesia): what was done in each phase, the Phase 2 verdict and any recorded warning decision, and where every report/generated file landed.
Notes
references/secret-patterns.mdconsolidates what used to be two independently-drifting inline pattern lists into one shared source of truth.
Rules
- Never sanitize in place — always stage to a separate
TARGET_DIR(Phase 1, Step 2). - Never let Phase 3 start on a FAIL verdict, no exceptions, no "package it anyway, fix later" path.
- Never silently proceed past PASS-WITH-WARNINGS — get and record an explicit decision first.
- Never trust
FORK_REPORT.md's claims as evidence in Phase 2 — re-derive everything. - Keep secret/PII patterns in
secret-patterns.mdonly — no inline copies in Phase 1 or Phase 2's own reference files. - Generated
CLAUDE.mdreuses this ecosystem's Execution Context Pack format and stays under 100 lines — seereferences/packaging-templates.md.
Signals
- GitHub stars
- 21
- Last commit
- Sep 2026
ahel review
K1binfo
installs-packages (in references/packaging-templates.md)
Automated review, not a security audit. Ruleset v1+k2.
Advanced
- Item type
- skill
- Key
opensource-release-edho-ferdian- Source
- github.com/edhoferdian/eef
Related picks
Skill · jabrena
The pick for GitHub Issuesgithub-issues
Skill · graniet
The pick for GitHub Issuesgithub
Skill · anil-matcha
The pick for GitHub Issuesrequest-refactor-plan
Skill · andrebrait
The pick for GitHub Issuessecrets-exposure-review
Skill · naodeng
The pick for Secretssecrets-with-git-crypt
Skill · derailed-dash
The pick for Secrets