- Python 96.6%
- Shell 3.4%
|
All checks were successful
validate / selftest (push) Successful in 15s
An adversarial pass reproduced 13 defects in the deterministic layer — the checkers
that are the product. Several defeated the core guarantee (forged evidence passing,
a denial substantiating a claim). All are fixed and reproduced green; the reproductions
are now regression guards in selftest.sh.
High:
- consistency_check crashed with an uncaught ValueError on a textual plan price
("Custom", "Contact sales"), aborting every later check — an enterprise tier is the
normal trigger. Guarded; a non-numeric price is skipped.
- truth_check: a denial of a term substantiated the claim, so "we are NOT SOC 2
certified" in 07-legal made a "SOC 2 certified" marketing claim pass. substantiated()
now ignores negated mentions.
- truth_check: the negation guard skipped the whole line on any stray "no"/"non",
whitewashing "SOC 2 certified. No credit card required." Now scoped to a window
before the specific claim.
- verify_gates: a pass verdict with a command line but empty output passed, and
must_contain was satisfiable from the command string. A pass now requires real
output, and must_contain is matched against the output only.
Medium:
- verify_gates: a tampered bound file self-healed to pass on the next run; staleness
now latches (binding keyed to the evidence `when`, cleared only by a newer record).
- load_waivers ignored `expires`, so an expired waiver kept suppressing its item;
expired waivers now reopen the item in both the audit and the coverage report.
- must_contain was an unanchored substring, so "AI" matched "domain" and "24" matched
"2024". New shared contains_tokens() applies a word-boundary rule for short and
numeric tokens while keeping prefix tokens like "migrat".
- truth_check flagged numbers inside fenced code blocks and the venture's own plan
prices; now tracks fence state and excludes the lock's own amounts.
- truth_check citation radius let an unrelated nearby source mask a bare number;
scoped to the claim's own blank-line-delimited paragraph.
- truth_check placeholder rule flagged bare semantic HTML tags (<section>) and
example.com framed as an illustration; both excluded.
- authorization_check missed sk_live_ keys in .env.local, Dockerfile and extensionless
config files; scan broadened.
Low:
- authorization_check required-action coverage was a substring match ("entity" covered
by "identity"); now word-boundary. Vague-command list extended.
Scoping (genesis_lib.matches/tier_at_least/applicable) and the exit-code contract were
probed and found clean.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
||
|---|---|---|
| .forgejo/workflows | ||
| evals | ||
| genesis | ||
| tools | ||
| .gitignore | ||
| install.sh | ||
| LICENSE | ||
| README.md | ||
genesis
A Claude Code skill that turns one request into a company: market research, positioning, pricing, product spec, architecture, brand and design system, the working codebase, security and accessibility hardening, legal and privacy documents, tax, observability, search and AI-answer visibility, paid and lifecycle marketing, sales, support, the finance model, operations, and the launch runbook.
What makes it different from a long prompt is the machinery underneath: a fixed phase spine, 15 executable gates that only open on recorded evidence, a registry of 511 things that are quietly forgotten, and a rule that nothing irreversible is ever done — it is queued for one human authorisation instead.
Install
git clone https://forgejo.ekaii.fr/exo/genesis-skill.git
cd genesis-skill && ./install.sh # copies genesis/ to ~/.claude/skills/genesis
Then, in Claude Code:
/genesis build me a SaaS that chases overdue invoices for freelance designers
It also triggers without the slash command on requests like "launch a marketplace end to end", "monte-moi un SaaS prêt pour la production", or a single slice such as "do the positioning and pricing for this idea".
Requirements: python3 3.8 or newer. Every bundled script uses the standard library
only, so there is nothing to install.
How it works
P0 intake → P1 market → P2 strategy → P3 product → P4 architecture
P5 design → P6 build → P7 harden → P8 legal → P9 observability
P10 go to market → P11 business ops → P12 audit → P13 launch → P14 handoff
Each phase writes artefacts into a venture workspace, then stops at its gate. A gate
check passes one of two ways: a command that exits 0, or an evidence block in
EVIDENCE.md containing the actual output of the command that was run. A pass verdict
with no output is rejected, and evidence bound to files goes stale when those files
change.
Three mechanisms do the work that a human reviewer would otherwise have to:
COMPANY.lock.json— the single source of truth for the venture: archetype, tier, conditions, name, category, plans, prices, URLs, legal entity, budget. Code, marketing copy and legal text quote its strings exactly, andconsistency_check.pyfails when they drift apart.- The blindspot registry — 511 items across 32 disciplines, each scoped by
archetype, tier and product conditions, each with the proof that closes it.
blindspot_audit.pyreports what is still open; silence counts as unaddressed. - The authorisation queue — anything that spends money, binds a person, reaches a
real third party or cannot be undone goes in
AUTHORIZATION.mdwith its exact command, cost, blast radius and undo. The run continues; the operator says yes once.
Repository layout
genesis/
SKILL.md the orchestrator: spine, rules, routing, gotchas
references/ (51 files) one per discipline, loaded only when its trigger applies
registry/ phases, gates, blindspots, conditions, archetypes,
defaults, roles — JSON, queried by script
scripts/ (16 files) the deterministic layer, standard library only
tools/
merge_blindspots.py validate and merge registry fragments
selftest.sh validates the skill itself
evals/
evals.json trigger cases and scenario cases
The scripts
| Script | Use |
|---|---|
registry.py |
Query what applies: blindspots, gates, defaults, archetypes, roles |
scaffold_venture.py |
Create the workspace, the lock and the state files |
verify_gates.py |
Evaluate gates, parse evidence, bind digests, render STATE.md |
blindspot_audit.py |
Audit against the registry, render BLINDSPOTS.md, audit waivers |
truth_check.py |
Unsourced numbers, unsubstantiated claims, placeholder residue |
consistency_check.py |
Lock strings versus code, copy and legal text; contract freezing |
code_audit.py |
Secrets, placeholders, hardcoded design values, test-integrity drift |
contrast_check.py |
Token contrast ratios and light and dark completeness |
web_audit.py |
Security headers, CSP, SEO tags, structured data, broken links |
dns_audit.py |
SPF, DKIM, DMARC, DNSSEC, CAA, expiry, name availability |
unit_economics.py |
Margin, payback, break-even, runway, one-at-a-time sensitivity |
spec_lint.py |
Story testability, ADR coverage, data-inventory completeness |
vendor_reconcile.py |
Vendors in code versus the published subprocessor list |
authorization_check.py |
The queue is complete and nothing was done unilaterally |
coverage_report.py |
Per-discipline honest accounting, renders COVERAGE.md |
Every script: non-interactive, --help is its documentation, human output plus
--json, and exit codes 0 pass, 1 findings, 2 usage error, 3 inconclusive. An
inconclusive check is never treated as a pass.
Scope control
Tiers. T0 validate only, T1 live MVP, T2 production commercial (the default),
T3 scale and enterprise. A tier changes scope, never quality: security, legal
accuracy and accessibility do not degrade by tier.
Archetypes. saas-b2b, saas-b2c, api-devtool, marketplace, ecommerce-dtc,
mobile-app, ai-product, content-media, services-agency, oss-commercial,
internal-tool, local-business.
Scoping is what keeps the audit credible. On a B2B SaaS at T2 with AI features, 394 of the 511 registry items apply; the rest stay silent because they genuinely do not.
Verifying a change
tools/selftest.sh # registries, limits, references, lifecycle
python3 genesis/scripts/registry.py validate
python3 tools/merge_blindspots.py --parts <fragments-dir> --check
selftest.sh also enforces the skill-authoring limits: name matches the directory,
description under 1024 characters, SKILL.md under 500 lines, every phase reference
present, and a contents list in every reference file over 100 lines.
Extending it
- A new blindspot: add it to
genesis/registry/blindspots.jsonfollowinggenesis/registry/SCHEMA.md, then runregistry.py validate. Scope it honestly; an item that fires where it does not apply teaches the operator to ignore the audit. - A new archetype: add it to
archetypes.jsonwith its preset conditions, then review which registry items should scope to it. - A new default: add it to
defaults.jsonwithvalue,whyandreverse_cost. A default without a reason will be followed without thought. - A new discipline reference: add the file, add it to the owning phase's
referencesinphases.json, and add its load trigger to the routing table inSKILL.md.
What it does not do
It does not give legal, tax or investment advice, does not execute irreversible actions, and does not replace professional review before a first sale. It produces the artefacts, the evidence and the queue; a qualified human signs what needs signing.
Licence
Proprietary. See LICENSE.