absolute-init — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited absolute-init (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
"set up / initialize / configure absolute"). Start your first response with the ⚙️ emoji.
One-time setup. Detect the project's real conventions, ask a few questions about how you want absolute to behave, then write that to JSON config the other ten commands read on every run. Result: commands stop re-detecting your stack from scratch and respect your preferences (output style, gating, TDD strictness) without being told each time.
This is the only command that writes config. It is non-destructive: an existing config is shown and updated, never blindly overwritten. It never commits.
Other commands run fine without init — they fall back to on-the-fly detection and emit a one-line suggestion to run it. init just makes them faster and tailored.
Auto-detect the stack using the Codebase Convention Detection table in references/work.md (package manager, language/runtime, test runner, linter/formatter, build, CI, available scripts). Resolve each to the project's own script form (npm test, make lint) so cached commands match CI — not raw tools.
Read the actual package.json scripts / Makefile targets to fill test, lint, typecheck, build. Detect the default branch with git symbolic-ref --short refs/remotes/origin/HEAD (fallback main). Anything you can't resolve confidently → leave it out and ask, or omit.
Before asking anything, check for existing config (precedence below). If found, print a compact summary of current values and ask whether to update (default) or start fresh. Treat existing values as the defaults for the interview so the user can keep them with one keystroke.
Ask only these, one at a time, pre-filled with detected/sensible defaults:
normal (default) or terse (compressed, minimal prose).gate-all (default; confirm before every change/wave) or auto-low-risk (auto-apply obviously-safe health waves, still gate risky ones).strict (default; test-first, red→green) or pragmatic (tests required but not strictly first).docs/plans.build, health, or both (default both). Trims the no-arg menu.conventions block; let them correct any command.Skip any question the existing config already answers unless the user wants to change it.
Write `.absolute.config.json` at the repo root (pretty-printed, 2-space). This is the committed, team-shared file. Then ask whether to also persist to the global file `~/.absolute/config.json`:
defaults.preferences — your cross-project preference defaults.projects["<absolute repo path>"] — a per-project override entry (machine-local, not committed).Merge into any existing global file; never drop unrelated keys. After writing, print the file paths and remind the user to commit `.absolute.config.json` (you never commit).
Both files share conventions + preferences; the global file wraps them.
`.absolute.config.json` (project, committed):
{
"version": 1,
"conventions": {
"packageManager": "npm",
"languages": ["typescript"],
"test": "npm test",
"lint": "npm run lint",
"typecheck": "npm run typecheck",
"build": "npm run build",
"ci": ".github/workflows/ci.yml",
"defaultBranch": "main"
},
"preferences": {
"outputStyle": "normal",
"autonomy": "gate-all",
"tdd": "strict",
"specDir": "docs/plans",
"families": ["build", "health"]
}
}`~/.absolute/config.json` (user/global):
{
"version": 1,
"defaults": {
"preferences": {
"outputStyle": "normal",
"autonomy": "gate-all",
"tdd": "strict",
"specDir": "docs/plans",
"families": ["build", "health"]
}
},
"projects": {
"/Users/you/dev/your-repo": {
"conventions": { "packageManager": "pnpm", "test": "pnpm test" },
"preferences": { "outputStyle": "terse" }
}
}
}Field meanings:
| Field | Values | Effect | |
|---|---|---|---|
conventions.* | strings | Cached stack/scripts every command runs through instead of re-detecting. | |
preferences.outputStyle | normal \ | terse | Verbosity of command responses. |
preferences.autonomy | gate-all \ | auto-low-risk | Whether health commands auto-apply safe waves. |
preferences.tdd | strict \ | pragmatic | work's test-first rigor. |
preferences.specDir | path | Where spec/work write design docs. | |
preferences.families | ["build","health"] subset | Trims the no-arg menu to what you use. |
At the start of any command, resolve effective config by overlaying, highest wins:
./.absolute.config.json (project, committed)~/.absolute/config.json → projects["<cwd absolute path>"]~/.absolute/config.json → defaultsShallow-merge conventions and preferences separately. If none exist, there is no config — the command soft-recommends init and uses on-the-fly detection.
test/lint that don't match CI poison every later command — verify each detected script actually runs.~/.absolute/config.json is machine-local; only .absolute.config.json is committed.init after stack changes.tdd/autonomy prefs.conventions for DETECT and autonomy for gating.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.