diff --git a/SKILL.md b/SKILL.md index fddb446..8a9273e 100644 --- a/SKILL.md +++ b/SKILL.md @@ -28,6 +28,10 @@ The reference implementations to copy from are `~/Git/kapture` and `dist/`, `.swiftpm/`, `xcuserdata/`, `DerivedData/`, `.DS_Store`. (`go build ./...` drops a binary next to the source — ignore it explicitly.) - Never commit secrets (`.p8`, API keys) or push to a remote unless asked. +- **Reference material goes in `.reference/`, never in the repo.** Every project + that is modelled on another app or repo gets a `.reference/` folder with a + `.gitignore` containing `*` — see [Reference material](#2-reference-material-reference) + for the exact shape and what to put in it. - Commit messages: concise, why-focused, first line < 72 chars; add a body only when it helps a future reader. - Prefer SwiftPM (Swift/SwiftUI) for macOS apps; no external dependencies. @@ -48,11 +52,36 @@ git push -u origin main ``` Scaffold every repo with `README.md`, `AGENTS.md` (architecture + commands + -gotchas), and `.gitignore`. See `~/Git/simpletopbar` for the minimal shape: -`Package.swift`, `Sources//*.swift`, `build-app.sh`, `release.sh`, -`scripts/`. +gotchas), `.gitignore`, and `.reference/` (see below). See +`~/Git/simpletopbar` for the minimal shape: `Package.swift`, +`Sources//*.swift`, `build-app.sh`, `release.sh`, `scripts/`. -## 2. Homebrew tap +## 2. Reference material (`.reference/`) + +Apps and repos that a project is modelled on are research input, not source +code. Keep them in an untracked `.reference/` folder at the repo root so they +are available to every session without ever entering the repository: + +```bash +mkdir -p ~/Git//.reference +printf '*\n' > ~/Git//.reference/.gitignore +``` + +- The `.gitignore` **inside** `.reference/` contains a single `*`. Ignore the + whole folder there, not in the repo's root `.gitignore`: the folder is then + self-contained and stays untracked even if the root ignore file is rewritten. +- Clone reference repos inside it: + `git clone --depth 1 .reference/`. Do not vendor them into + `Sources/` or `vendor/`. +- Write one short note per reference (`tangerine.md`, `filee.md`) covering: what + the app does, its interaction model, the formats/features worth matching, and + what we deliberately skip. Notes are untracked too — that is fine; they are + for the next session, not for the public repo. +- Check licences before reusing code. MIT/Apache-2.0 code can be adapted with + attribution; never copy assets, icons, or code from a closed app. +- `.reference/` is never committed, never released, and never required to build. + +## 3. Homebrew tap - The tap clone lives at **`~/.cache/homebrew-tap`** (origin `https://gitea.tzgyn.dev/TZGyn/homebrew-tap.git`). @@ -106,7 +135,7 @@ class < Formula end ``` -## 3. Releasing a macOS GUI app +## 4. Releasing a macOS GUI app Two scripts per repo: `build-app.sh ` and `release.sh `. @@ -118,7 +147,7 @@ Two scripts per repo: `build-app.sh ` and `release.sh `. `CFBundleIdentifier = dev.tzgyn.`. 2. **Notarize + staple + zip** (`release.sh`): build → `ditto -c -k --keepParent .app dist/.zip` → submit to Apple → staple → re-zip → print sha256. - See [Notarization](#4-notarization) for the credentials. + See [Notarization](#5-notarization) for the credentials. 3. **Publish the release** and attach the zip: ```bash @@ -147,7 +176,7 @@ Two scripts per repo: `build-app.sh ` and `release.sh `. brew upgrade --cask ``` -## 4. Notarization +## 5. Notarization Signing identity: `Developer ID Application: Teh Zi Gyn (RX6767S6BW)`. App Store Connect API key (shared with Kapture): @@ -204,13 +233,13 @@ xcrun notarytool history --key ... --key-id ... --issuer ... # 403 here = acco problem is the account, not the bundle, so there is nothing to change in the app or the scripts. -## 5. Mobile +## 6. Mobile For mobile (iOS/Android), notarization does not apply; the equivalent is store signing (App Store Connect / Play Console) or EAS. Ask for the specific stack before assuming; this skill currently only codifies the macOS path. -## 6. Extending this skill (self-improvement) +## 7. Extending this skill (self-improvement) This skill is meant to grow. When the user asks for a new behaviour, preference, or convention: