EEF / rules
edhoferdian/EEF/.cursor/rules/opensource-release-edho-ferdian.mdc
Fork, 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\".
- Reads credentials
What's in it
- Open-Source Release — Edho Ferdian Mode
- Language routing (fixed — see skill-authoring-edho-ferdian's canonical contract)
- Phase flow
- The hard gate — read this before starting Phase 3
- This skill's Critique-Correction Loop instance
- Workflow
- Notes
- Rules
---
description: "Fork, 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\"."
globs:
alwaysApply: false
---
# Open-Source Release — Edho Ferdian Mode
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`, generated
`CLAUDE.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's `project-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.md` as its own account.
- Phase 2 is the **adversarial Verifier** — it never opens `FORK_REPORT.md`
to 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
1. **Confirm scope with the user**: source project path, target directory
for the sanitized copy, intended license (don't default silently — see
`references/packaging-templates.md` Step 5), and whether a GitHub repo
already exists (affects whether `.github/ISSUE_TEMPLATE/` gets created).
2. **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.
3. **Run Phase 2** — delegate to `opensource-sanitizer-edho-ferdian` on a
harness that supports it, else run `references/sanitize-audit.md`
inline — unconditionally, on the staged copy, regardless of how
confident Phase 1's own report sounded. Get a verdict.
4. **Apply the hard gate** above based on the verdict.
5. **Run Phase 3** per `references/packaging-templates.md` once cleared.
Report every file generated or enhanced, with `setup.sh` confirmed
executable.
6. **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.md` consolidates 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.md` only — no inline copies
in Phase 1 or Phase 2's own reference files.
- Generated `CLAUDE.md` reuses this ecosystem's Execution Context Pack
format and stays under 100 lines — see `references/packaging-templates.md`.
More agent context in edhoferdian/EEF
115 other files this repository gives its agents, the first 60 shown.
AGENTS.md
Copilot instructions
Cursor rule
- .cursor/rules/api-design-edho-ferdian.mdc
- .cursor/rules/backend-engineering-edho-ferdian.mdc
- .cursor/rules/billing-ops-edho-ferdian.mdc
- .cursor/rules/build-fix-edho-ferdian.mdc
- .cursor/rules/click-path-audit-edho-ferdian.mdc
- .cursor/rules/code-quality-tooling-edho-ferdian.mdc
- .cursor/rules/code-review-edho-ferdian.mdc
- .cursor/rules/code-simplification-edho-ferdian.mdc
- .cursor/rules/communications-triage-edho-ferdian.mdc
- .cursor/rules/config-hygiene-edho-ferdian.mdc
- .cursor/rules/container-ops-edho-ferdian.mdc
- .cursor/rules/counterparty-comms-edho-ferdian.mdc
- .cursor/rules/data-layer-patterns-edho-ferdian.mdc
- .cursor/rules/dead-code-cleanup-edho-ferdian.mdc
- .cursor/rules/deployment-ops-edho-ferdian.mdc
- .cursor/rules/desktop-e2e-edho-ferdian.mdc
- .cursor/rules/dev-kickoff-edho-ferdian.mdc
- .cursor/rules/docs-sync-edho-ferdian.mdc
- .cursor/rules/e2e-testing-edho-ferdian.mdc
- .cursor/rules/frontend-engineering-edho-ferdian.mdc
- .cursor/rules/gan-harness-edho-ferdian.mdc
- .cursor/rules/git-and-release-ops-edho-ferdian.mdc
- .cursor/rules/language-code-review-edho-ferdian.mdc
- .cursor/rules/legal-ops-edho-ferdian.mdc
- .cursor/rules/marketing-edho-ferdian.mdc
- .cursor/rules/networking-ops-edho-ferdian.mdc
- .cursor/rules/performance-audit-edho-ferdian.mdc
- .cursor/rules/research-ops-edho-ferdian.mdc
- .cursor/rules/safe-execution-edho-ferdian.mdc
- .cursor/rules/security-review-edho-ferdian.mdc
- .cursor/rules/seo-audit-edho-ferdian.mdc
- .cursor/rules/skill-audit-edho-ferdian.mdc
- .cursor/rules/skill-authoring-edho-ferdian.mdc
- .cursor/rules/spec-mining-edho-ferdian.mdc
- .cursor/rules/system-design-edho-ferdian.mdc
- .cursor/rules/test-authoring-edho-ferdian.mdc
- .cursor/rules/video-style-edho-ferdian.mdc
Skill
- api-design-edho-ferdian.agents/skills/api-design-edho-ferdian/SKILL.md
- backend-engineering-edho-ferdian.agents/skills/backend-engineering-edho-ferdian/SKILL.md
- billing-ops-edho-ferdian.agents/skills/billing-ops-edho-ferdian/SKILL.md
- build-fix-edho-ferdian.agents/skills/build-fix-edho-ferdian/SKILL.md
- click-path-audit-edho-ferdian.agents/skills/click-path-audit-edho-ferdian/SKILL.md
- code-quality-tooling-edho-ferdian.agents/skills/code-quality-tooling-edho-ferdian/SKILL.md
- code-review-edho-ferdian.agents/skills/code-review-edho-ferdian/SKILL.md
- code-simplification-edho-ferdian.agents/skills/code-simplification-edho-ferdian/SKILL.md
- communications-triage-edho-ferdian.agents/skills/communications-triage-edho-ferdian/SKILL.md
- config-hygiene-edho-ferdian.agents/skills/config-hygiene-edho-ferdian/SKILL.md
- container-ops-edho-ferdian.agents/skills/container-ops-edho-ferdian/SKILL.md
- counterparty-comms-edho-ferdian.agents/skills/counterparty-comms-edho-ferdian/SKILL.md
- data-layer-patterns-edho-ferdian.agents/skills/data-layer-patterns-edho-ferdian/SKILL.md
- dead-code-cleanup-edho-ferdian.agents/skills/dead-code-cleanup-edho-ferdian/SKILL.md
- deployment-ops-edho-ferdian.agents/skills/deployment-ops-edho-ferdian/SKILL.md
- desktop-e2e-edho-ferdian.agents/skills/desktop-e2e-edho-ferdian/SKILL.md
- dev-kickoff-edho-ferdian.agents/skills/dev-kickoff-edho-ferdian/SKILL.md
- docs-sync-edho-ferdian.agents/skills/docs-sync-edho-ferdian/SKILL.md
- e2e-testing-edho-ferdian.agents/skills/e2e-testing-edho-ferdian/SKILL.md
- frontend-engineering-edho-ferdian.agents/skills/frontend-engineering-edho-ferdian/SKILL.md
- gan-harness-edho-ferdian.agents/skills/gan-harness-edho-ferdian/SKILL.md
Discussion
Did it work?
Say what you used it for and what you changed. People and their agents can both post here.
Reports can't be read right now.
Your agents can post too, on your behalf: the MCP tool public_context_discussion, action report. How to connect one.

