|
| 1 | +# Contributing |
| 2 | + |
| 3 | +Thanks for looking. This project has an unusual shape: about a third of it is a Go CLI, and two thirds of it is a research method encoded as prose. Contributions to either are welcome, but they are judged differently. |
| 4 | + |
| 5 | +## The code |
| 6 | + |
| 7 | +```bash |
| 8 | +git clone https://github.com/waveriderai/cli-type-foundry.git |
| 9 | +cd cli-type-foundry |
| 10 | +make # build |
| 11 | +make vet |
| 12 | +make test |
| 13 | +make plugin # repackage the Cowork/Claude Code plugin |
| 14 | +``` |
| 15 | + |
| 16 | +Requires Go 1.22+. No third-party dependencies — that is deliberate. A PR that adds one needs to justify why the standard library will not do. |
| 17 | + |
| 18 | +Optional external tools (`jadx`, `apktool`, `7z`, `wireshark`) are detected at runtime by `foundry doctor`. Every one of them must have a fallback path; never make an external binary mandatory. |
| 19 | + |
| 20 | +### What good code contributions look like |
| 21 | + |
| 22 | +- A new `PunchKind` with a `strike` implementation, a magic-byte signature in `intake.Classify`, and a fallback for when the preferred extractor is missing. |
| 23 | +- A new redaction rule in `internal/redact` — with a test proving the raw value never survives. |
| 24 | +- Better path templating in `internal/strike/har.go`. The current regexes catch numeric, UUID, hex, and slug-ID segments; there are more shapes out there. |
| 25 | +- A `capture` playbook for a platform not yet covered. |
| 26 | + |
| 27 | +### What will be declined |
| 28 | + |
| 29 | +- Anything that defeats certificate pinning, DRM, or licence enforcement. Pinning is **recorded as a finding**, never bypassed. This is not negotiable and is not a difficulty problem. |
| 30 | +- Anything that stores, prints, or reconstructs a credential. Redaction happens on read, before values ever reach a struct field. |
| 31 | +- Vendoring or shelling out to a tool that has no fallback. |
| 32 | + |
| 33 | +## The method |
| 34 | + |
| 35 | +`docs/LENS.md` and `plugin/skills/foundry-lens/SKILL.md` describe the three-pass research method. They are the actual product; the CLI mechanises the extraction, not the thinking. |
| 36 | + |
| 37 | +Changes here need evidence, not preference. "I reworded this to be clearer" is fine. "I added a fourth failure mode" needs a concrete teardown where the existing three did not explain the miss. The method earned its shape from a real case where pass 1 found ~120 features, pass 2 found ~80 more, and pass 3 found the one fact that changed what should be built — proposals should be able to point at something comparable. |
| 38 | + |
| 39 | +If you run the method on your own target and it produces a finding class the docs do not name, that is the highest-value contribution this repo can receive. Open an issue describing the miss before writing the patch. |
| 40 | + |
| 41 | +## Scope and legality |
| 42 | + |
| 43 | +By contributing you affirm your change keeps the project inside its stated scope: analysing lawfully obtained artifacts, capturing traffic only from accounts the contributor controls on devices they own, and producing specs clearly labelled as reconstructed with no implied vendor endorsement. |
| 44 | + |
| 45 | +## Style |
| 46 | + |
| 47 | +- Go: `gofmt`, standard library, errors wrapped with context, no panics in library code. |
| 48 | +- Prose: plain declarative sentences. The docs avoid hedging and avoid hype in equal measure. |
| 49 | +- Commits: imperative mood, one logical change each. |
| 50 | + |
| 51 | +MIT licensed. Contributions are accepted under the same licence. |
0 commit comments