GEMINI.md
GEMINI.mdGEMINI.mdroot
Quality
65/100
Scores the file, not the repository.Length
397 words
16 headings · 2 code blocksRepository
12k
— · pushed 3 days agoLast changed
2 days ago
First indexed 2 days ago.1# Gemini Guidelines for `mas`23You are an expert Swift & Zsh developer assisting with the maintenance &4development of `mas`, a command-line interface for the Mac App Store.56## Project Overview78- **Name:** `mas`9- **Description:** A CLI for the Mac App Store, designed for scripting &10 automation.11- **Language:** Swift 6.3 (using Swift Argument Parser)12- **Target OS:** macOS 13+13- **Project Type:** SwiftPM project1415## Technical Stack1617- **Swift:** 6.3+ (Check [.swift-version](.swift-version))18- **Xcode:** 26.4+ (Check [.xcode-version](.xcode-version))19- **macOS:** 13+ (Check [Package.swift](Package.swift))20- **Private Frameworks:** Uses `CommerceKit` & `StoreFoundation` for App Store21 integration only where public APIs are insufficient.2223## Development Workflows2425### Bootstrap2627```shell28Scripts/bootstrap29```3031### Build3233- Debug: `Scripts/build`34- Release: `Scripts/build '' -c release`3536### Lint & Format3738- Quick Lint: `Scripts/lint -AP`39- Full Lint: `Scripts/lint`40- Format: `Scripts/format` (Run repeatedly until no changes occur)4142### Test4344```shell45Scripts/test46```4748## Engineering Standards4950Refer to [AGENTS.md](AGENTS.md) for comprehensive guidelines. Key highlights:5152### Content Guidelines5354- **Newlines:** UNIX (LF)55- **Indentation:** Tabs (width: 2) for Swift/Zsh; Spaces (2) for YAML; Spaces56 (1) for Markdown.57- **Max line length:** 120 characters (80 for Markdown).58- **Preservation:** Do not reformat, rename, or reorder code unless necessary59 for functionality.6061### Markdown Guidelines6263- **Style:** GitHub-Flavored Markdown (GFM), ATX headings, backtick-fenced code64 blocks with language identifier, underscore emphasis, asterisk strong & hyphen65 bullets.66- **HTML:** Limited to elements supported by GFM that don't have an equivalent67 in GFM for the use case.6869### YAML Guidelines7071- **Style:** 2-space indentation, unix newlines, quoted strings only when72 necessary, single quotes for strings.73- **Rules:** Forbid non-empty braces, require document start (`---`).7475### Zsh Scripting7677- **Shebang:** `#!/bin/zsh -Ndefgku`78- **Setup:** Start scripts with `. "${0:A:h}/_setup_script"`79- **Preference:** Use zsh builtins over external commands.80- **Commands:** Use `cp -c` & `trash` (not `rm`).8182### Swift Development8384- **Structure:** Organized by `Commands/`, `Models/`, `Utilities/`.85- **Force Unwrapping:** Avoid in `Sources/mas/`.86- **Naming:** Capitalize acronyms consistently (e.g., `ADAM`, `API`, `JSON`).87- **Organization:** Group computed properties below stored properties.88- **Error Handling:** Prefer typed throws (`throws(ErrorType)`),89 then `rethrows`, then untyped `throws`.9091### Git Workflow9293- **Trunk:** `main`94- **Commits:** Follow [conventional commit style](95 https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html96 ).97- **Pre-commit:** Always run `Scripts/format` & `Scripts/lint` before98 committing.99100## Testing Requirements101102- **Framework:** [Swift Testing](https://github.com/swiftlang/swift-testing).103- **Location:** `Tests/MASTests/`104- **Naming Convention:** `Sources/mas/Path/To/File.swift` ->105 `Tests/MASTests/Path/To/MASTests+File.swift`.106- **Assertions:** Use force unwrapping (`!`) in tests if appropriate.107
Also in mas-cli/mas
Diff this repo’s formatsOne repository carrying more than one format is the comparison this product exists for: does anyone actually write different content in each file, or is one a copy of the other?
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| mas-cli/masAGENTS.md · 12k | AGENTS.md | testlint-formatstylegit+2 | 67/100 | 2 days ago |
Similar configs
Same format, overlapping stack, ranked by quality.
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| google-gemini/gemini-cliGEMINI.md · 106k | GEMINI.md | setupbuildtestlint-format+6 | 91/100 | 3 days ago | |
| diegosouzapw/OmniRouteGEMINI.md · 38k | GEMINI.md | testlint-formatarchsecurity+2 | 87/100 | 3 days ago | |
| compozy/gographGEMINI.md · 9 | GEMINI.md | setuptestlint-formatarch+4 | 86/100 | 3 days ago | |
| lepinkainen/hovimestariGEMINI.md · 0 | GEMINI.md | teststylearchtesting-strategy+1 | 81/100 | 3 days ago | |
| firebase/flutterfireGEMINI.md · 9.2k | GEMINI.md | lint-formatstylearchdo-not+1 | 80/100 | 3 days ago | |
| zigcc/zig-cookbookGEMINI.md · 1.2k | GEMINI.md | setupbuildlint-formatstyle+3 | 79/100 | 3 days ago | |
| lepinkainen/humanlogGEMINI.md · 0 | GEMINI.md | buildteststylearch+2 | 79/100 | 3 days ago | |
| iloveitaly/llm-ide-rulesGEMINI.md · 13 | GEMINI.md | setupteststyletypes+7 | 77/100 | 3 days ago |
