- Add 'confluence' (always-enabled, per README) to COMMON_BUNDLED so a
default install (no PI_KIT_PROFILE / no tty) no longer silently strips
it from settings.json. The allowlist now covers every skill under skills/.
- Deduplicate PROFILES in profiles_from_text: skip a canonical name already
present, so 'frontend,1' or 'backend backend' no longer causes a redundant
'npx skills add' call or a misleading 'Профили: frontend frontend'.
- Ship the multi-profile refactor it builds on: merged profile sets,
profile_skills()/add_word() helpers, README updates, and the pm-task-spec
bundled skill.
Validated: bash -n; functional checks for dedup and allowlist coverage.
- uninstall.sh: removes pi-kit from settings.json (string + gated object
entries), the package clone, kit-installed public skills, ~/.config/pi-kit
(env.sh with tokens, audit.jsonl) and the shell-rc sourcing block
- confirmation prompt by default; PI_KIT_UNINSTALL=1 for non-interactive,
PI_KIT_KEEP_CONFIG=1 / PI_KIT_KEEP_SKILLS=1 to retain parts
- works without the pi binary (settings edited directly); notes how to
remove pi itself
- tests: test/uninstall.test.sh against a throwaway $HOME (14 checks:
full/partial removal, refusal without flag, idempotent re-run), wired
into npm test
git.codelab.vc is Gitea/Forgejo: raw path is /raw/branch/<ref>/, the GitLab-style
/-/raw/main/ returned 404 so the one-command install was broken. The one-liner
now also fetches the script from the stable channel (vetted), not main.
- prompt TRACKER_URL (visible, current value as default) and JIRA_TOKEN/GITLAB_TOKEN/provider key (hidden read -rs, never echoed) via /dev/tty (works under curl|bash)
- persist to ~/.config/pi-kit/env.sh (umask 077 => chmod 600), sourced from shell rc via idempotent managed block
- ask provider key only if none already set; empty input keeps existing value; re-runs load stored values as defaults
- non-interactive / PI_KIT_SETUP_ENV=0 falls back to printed guidance
- README documents the flow, env.sh, and the skip switch
Unit-tested: single-quote escaping round-trip, 600 perms, empty-value omission, rc-block idempotency.
- kotlin-standards: gradle build/test, ktlint/detekt, Android lint; company specifics TODO
- swift-standards: SwiftPM/xcodebuild, swiftformat/swiftlint, XCTest; company specifics TODO
- wire mobile profile -> kotlin+swift; 'all' now includes both; README matrix updated
- verified all six *-standards skills load via pi RPC
- prompt for profile (frontend/backend/qa/mobile) via /dev/tty (works under curl|bash); PI_KIT_PROFILE env fallback
- gate bundled skills per profile by rewriting the pi-kit entry in settings.json to object-form {source, skills:[...]}; prompts/extensions stay ungated
- install common public skills for everyone (grill-me, grill-with-docs, code-review, diagnosing-bugs from mattpocock/skills) and profile-specific (frontend-design from anthropics/skills) via npx skills add --global
- README: profiles table + gating mechanism for maintainers
Verified: gating logic (string->object, idempotent, other packages preserved), live backend-profile load via RPC (ts excluded, prompts intact), npx skills add --global lands in ~/.agents/skills without cwd pollution, all 4 common skills exist in mattpocock/skills (diagnose is 'diagnosing-bugs').
Engineers use different LLM providers (Anthropic/OpenAI/OpenRouter/...); the
package does not pin a provider or model. install.sh now accepts any known
provider key and README states provider-agnosticism explicitly.