Przejdź do treści
Biblioteka skilli
Programowanie · Automatyzacja

crashlytics-install-permissions

/crashlytics-install-permissions

Dodaje read-only polecenia wtyczki Crashlytics do listy dozwolonych w settings.json, żeby analiza awarii nie pytała o zgodę za każdym razem.

Licencja
MIT
Ostatnia zmiana repozytorium
23.10.2026

Ocena i bezpieczeństwo

95/ 100Klasa: dobry
Format20 / 25
Frontmatter z nazwą i opisem, poprawna nazwa, opis do 1024 znaków, nazwa zgodna z folderem.
Odkrywalność25 / 25
Opis mówi, kiedy użyć skilla, ma sensowną długość i jest w 3. osobie.
Treść35 / 35
Co najmniej 150 słów i do 500 linii, nagłówki, listy kroków, przykłady albo kod.
Higiena15 / 15
Bez zaślepek typu TODO, bez ścieżek Windows, z licencją.
Ryzykobrak sygnałów w skanie
Pliki w paczce
4
Skrypty
3
Komentarze HTML
0
Adresy URL w SKILL.md
0
Przestarzałość

Brak sygnałów. Repozytorium zmienione 23.10.2026, bez odwołań do wycofanych modeli i API.

Licencja

MIT, otwarta: można używać i zmieniać, z zachowaniem informacji o autorze.

Co sprawdzić przed instalacją
  • 3 skrypty w paczce. Przejrzyj je przed instalacją, bo Claude może je uruchomić.

Skrypty: scripts/check-prerequisites.sh, scripts/fetch-crash-data.py, scripts/validate-report.py

Co robi i kiedy

Dodaje read-only polecenia wtyczki Crashlytics do listy dozwolonych w settings.json, żeby analiza awarii nie pytała o zgodę za każdym razem.

Oryginalny opis (EN)

Add Crashlytics plugin's read-only commands to your settings.json allowlist (no more permission prompts during /crash-report). Use when the user invokes /install-permissions.

Jak działa

  1. Step 1: Choose scope
  2. Step 2: Read current settings
  3. Step 3: Compute the diff
  4. Step 4: Show diff and confirm
  5. Step 5: Write merged settings
  6. Step 6: Confirm
  7. Notes
  8. Long-term TODO
  9. Codex differences
Sekcje z nagłówków SKILL.md, w oryginale · 173 linii, 644 słów
Podgląd SKILL.md
---
name: crashlytics-install-permissions
description: Add Crashlytics plugin's read-only commands to your settings.json allowlist (no more permission prompts during /crash-report). Use when the user invokes /install-permissions.
version: 0.1.0
---

> Converted from Claude Code command `/install-permissions`.
> Review and adapt: hooks and MCP tool IDs may need manual mapping for Codex.
> Helper scripts ship in this skill's own `scripts/` directory. Replace
> `<this skill directory>` with the path Codex reported when it loaded this skill —
> a bare relative path would resolve against the repository under review instead.

# Install Crashlytics permissions

Adds the Crashlytics plugin's read-only Bash and MCP tools to your settings.json
allowlist so `/crashlytics:crash-report` runs without permission prompts.

**What gets added** — strictly read-only operations:
- git: `status`, `log`, `blame`, `diff`, `show`, `fetch`, `branch`, `remote`, `ls-tree`, `ls-files`, `rev-parse`, `merge-base`
- crashlytics scripts (validate-report.py, fetch-crash-data.py, check-prerequisites.sh)
- MCP read tools: `crashlytics_get_*`, `crashlytics_list_*`, `crashlytics_batch_get_events`, `crashlytics_get_report`, `firebase_get_*`, `firebase_list_*`

**What is NEVER added** — write/auth/destructive operations:
- `git push`, `git commit`, `git reset`, `git rebase`, `git clean`
- `crashlytics_update_issue`, `crashlytics_create_note`, `crashlytics_delete_note`
- `firebase_login`, `firebase_logout`, `firestore_*`, `auth_*`, `storage_*`, `messaging_*`, `realtimedatabase_*`, `remoteconfig_*`

## Step 1: Choose scope

```yaml
AskUserQuestion:
  questions:
    - question: "Where to install the allowlist?"
      header: "Scope"
      options:
        - label: "User-level (~/.claude/settings.json)"
          description: "Applies in every project. Recommended if you use the plugin in multiple repos."
        - label: "Project-level (.claude/settings.local.json)"
          description: "Only this project. Safer if you don't want global allowance."
      multiSelect: false
```

If User-level → SETTINGS_PATH = `~/.claude/settings.json`.
If Project-level → SETTINGS_PATH = `.claude/settings.local.json` (mkdir -p `.claude` if missing).

## Step 2: Read current settings

```yaml
Bash: test -f {SETTINGS_PATH} && echo EXISTS || echo NEW
Read tool: {SETTINGS_PATH}   # if EXISTS

If NEW:
  CURRENT = { "permissions": { "allow": [] } }
Else:
  CURRENT = <parsed JSON>
  Ensure permissions.allow exists, default to []
```

## Step 3: Compute the diff

```python
SAFE_SET = [
    # git read-only
    "Bash(git status:*)",
    "Bash(git log:*)",
    "Bash(git blame:*)",
    "Bash(git diff:*)",
    "Bash(git show:*)",
    "Bash(git fetch:*)",
    "Bash(git ls-tree:*)",
    "Bash(git ls-files:*)",
    "Bash(git rev-parse:*)",
    "Bash(git merge-base:*)",
    "Bash(git branch:*)",
    "Bash(git remote:*)",
    "Bash(git config --get:*)",

    # crashlytics scripts
    "Bash(<this skill directory>/scripts/check-prerequisites.sh:*)",
    "Bash(python3 <this skill directory>/scripts/validate-report.py:*)",
    "Bash(python3 <this skill directory>/scripts/fetch-crash-data.py:*)",

    # generic safe utils used by the plugin
    "Bash(test -f:*)",
    "Bash(touch .claude/crashlytics-prereqs-ok)",

    # MCP — read-only Crashlytics
    "mcp__plugin_crashlytics_firebase__crashlytics_get_issue",
    "mcp__plugin_crashlytics_firebase__crashlytics_batch_get_events",
    "mcp__plugin_crashlytics_firebase__crashlytics_list_events",
    "mcp__plugin_crashlytics_firebase__crashlytics_get_report",
    "mcp__plugin_crashlytics_firebase__crashlytics_list_notes",

    # MCP — read-only Firebase project info
    "mcp__plugin_crashlytics_firebase__firebase_get_environment",
    "mcp__plugin_crashlytics_firebase__firebase_list_apps",
    "mcp__plugin_crashlytics_firebase__firebase_get_project",
    "mcp__plugin_crashlytics_firebase__firebase_list_projects",
    "mcp__plugin_crashlytics_firebase__firebase_get_sdk_config",
]

EXISTING = set(CURRENT["permissions"]["allow"])
TO_ADD   = [r for r in SAFE_SET if r not in EXISTING]
```

If `TO_ADD` is empty → inform user "All Crashlytics permissions already present in {SETTINGS_PATH}." and exit.

## Step 4: Show diff and confirm

Print:

```
Adding {N} new rule(s) to {SETTINGS_PATH}:
  + Bash(git fetch:*)
  + Bash(git ls-tree:*)
  + ...
```

Then:

```yaml
AskUserQuestion:
  questions:
    - question: "Apply these changes to {SETTINGS_PATH}?"
      header: "Confirm"
      options:
        - label: "Yes, write the file"
          description: "Append the new rules to permissions.allow"
        - label: "Cancel"
          description: "Don't change anything"
      multiSelect: false
```

If Cancel → exit without writes.

## Step 5: Write merged settings

```yaml
NEW = CURRENT
NEW["permissions"]["allow"] = sorted(set(EXISTING) | set(SAFE_SET))

Write tool: {SETTINGS_PATH}
  contents: json.dumps(NEW, indent=2, ensure_ascii=False) + "\n"
```

For project-level path — `mkdir -p .claude` first if needed.

## Step 6: Confirm

Display:

```
Crashlytics allowlist installed.

  Scope: {scope}
  File:  {SETTINGS_PATH}
  Added: {N} rule(s)

Restart your current Claude Code session for permissions to take effect.
Run /crashlytics:crash-report again — no permission prompts on read-only steps.
```

## Notes

- The script never adds write/auth/destructive rules.
- The script never modifies `permissions.deny` or other settings sections.
- Existing rules are preserved (set-union merge, sorted output).
- Re-run anytime — duplicate rules are deduplicated.

## Long-term TODO

When Claude Code adds a `permissions` field to `plugin.json` for declarative
allowlists, this command becomes obsolete. Track Anthropic's plugin spec.

## Codex differences

- A non-interactive run (`codex exec`, CI) has nobody to answer a prompt: continue on defaults, honour whatever the invoking prompt already specified, and report which defaults were used. If the whole point of the command is to ask, say that it needs an interactive session and stop rather than inventing answers.
Pliki w paczce (4)
  • SKILL.md 6 KB
  • scripts/check-prerequisites.sh 1 KB
  • scripts/fetch-crash-data.py 6 KB
  • scripts/validate-report.py 21 KB

Wersje

W bazie nie ma innych skilli o nazwie crashlytics-install-permissions.

Migawka bazy z 28.10.2026 · wersja paczki b534244cfc3e (skrót SHA-256 całej paczki)

Zgłoś problem z tym skillem: szkodliwa treść, błędny opis albo prośba autora o usunięcie.

Podobne skille

  • 95crashlytics-crash-config
    Konfiguruje ustawienia wtyczki Crashlytics: język, gałąź, platformę, model i identyfikatory projektu Firebase.
  • 95crashlytics-crash-report
    Analizuje raport awarii z Firebase Crashlytics, wykrywa platformę z konfiguracji i proponuje przyczynę oraz poprawkę.
  • 90firebase-crashlytics
    Prowadzi przez konfigurację Firebase Crashlytics i użycie jego SDK do raportowania awarii w aplikacji.
  • 100mobiai-crashlytics
    Bada szczegółowo zgłoszenie Firebase Crashlytics na podstawie linku do crasha lub jego identyfikatora.
  • 100crashlytics
    Generuje raporty awarii z Firebase Crashlytics z automatycznymi propozycjami poprawek, oceną ważności i przypisaniem programistów przez git blame.
  • 100permissions
    Rekomenduje bezpieczne uprawnienia Bash dla poleceń mix w Elixirze w settings.json, żeby ograniczyć monity o zgodę.

Uwagi i zgłoszenia

Wiadomość trafi do Bartosza Sokolińskiego. Adres e-mail jest potrzebny tylko do odpowiedzi. Szczegóły w polityce prywatności.