Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Initialize encrypted credentials for an Output.ai project. Use when setting up credentials for the first time, adding environment-specific credentials, or adding per-workflow credentials.
.claude/skills/growthxai-output-credentials-init/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | -9% | 0% |
| case-03 | ✗→✓ | ▲ Improved | -18% | 0% |
| case-01 | ✗→✓ | ▲ Improved | -21% | 0% |
| case-04 | ✗→✓ | ▲ Improved | -69% | 0% |
| case-05 | ✗→✓ | ▲ Improved | -25% | 0% |
The npx output credentials init command generates two files:
.key) — the decryption secret. Never commit this..yml.enc) — the credentials store. Safe to commit.bash# Global credentials (most common) npx output credentials init # Environment-specific npx output credentials init -e production npx output credentials init -e staging # Per-workflow credentials (overrides globals for that workflow) npx output credentials init -w my_workflow # Force overwrite existing files npx output credentials init --force
config/
├── credentials.key ← Add to .gitignore
└── credentials.yml.enc ← Safe to commitconfig/credentials/
├── production.key ← Add to .gitignore
└── production.yml.enc ← Safe to commitsrc/workflows/{name}/
├── credentials.key ← Add to .gitignore
└── credentials.yml.enc ← Safe to commitAfter init, the encrypted YAML contains this template:
yamlanthropic: api_key: "" openai: api_key: "" _env: ANTHROPIC_API_KEY: anthropic.api_key OPENAI_API_KEY: openai.api_key
The _env section wires credentials to environment variables automatically at worker startup. See output-credentials-env-vars for details.
bashnpx output credentials edit # Opens $EDITOR with decrypted YAML
Fill in the empty values, save, and close. The file is re-encrypted automatically.
bashecho "*.key" >> .gitignore echo "config/credentials.key" >> .gitignore
Or add to your .gitignore:
# Credentials decryption keys — never commit
*.key
config/credentials.key
config/credentials/*.key
src/workflows/*/credentials.keyIn CI/CD pipelines, pass the key as an environment variable instead of committing the file:
bash# Set in your CI/CD environment OUTPUT_CREDENTIALS_KEY=<key-value> # Environment-specific OUTPUT_CREDENTIALS_KEY_PRODUCTION=<key-value> # Per-workflow OUTPUT_CREDENTIALS_KEY_MY_WORKFLOW=<key-value>
The key value is the contents of the .key file.
config/credentials.key created (or env-specific variant)config/credentials.yml.enc created.key files added to .gitignorenpx output credentials edit run to fill in secret valuesnpx output credentials show verifies decryption worksoutput-credentials-edit — Fill in and manage credential valuesoutput-credentials-env-vars — Wire credentials to environment variablesoutput-dev-credentials — Full credentials system reference| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-02 | fail→pass | 12,274 | 5,609 | -54% | 1 | 1 | 0% | 2,134 | 1,941 | -9% | 0 | 0 | — |
case-03 | fail→pass | 12,079 | 4,766 | -61% | 1 | 1 | 0% | 1,984 | 1,618 | -18% | 0 | 0 | — |
case-01 | fail→pass | 14,428 | 6,902 | -52% | 1 | 1 | 0% | 2,538 | 2,007 | -21% | 0 | 0 | — |
case-04 | fail→pass | 23,553 | 2,929 | -88% | 1 | 1 | 0% | 4,001 | 1,254 | -69% | 0 | 0 | — |
case-05 | fail→pass | 10,549 | 3,237 | -69% | 1 | 1 | 0% | 1,689 | 1,262 | -25% | 0 | 0 | — |
case-06 | fail→pass | 10,442 | 3,350 | -68% | 1 | 1 | 0% | 1,694 | 1,295 | -24% | 0 | 0 | — |
case-07 | fail→fail | 10,773 | 3,584 | -67% | 1 | 1 | 0% | 1,788 | 1,412 | -21% | 0 | 0 | — |
case-08 | fail→fail | 9,326 | 2,542 | -73% | 1 | 1 | 0% | 1,560 | 1,205 | -23% | 0 | 0 | — |
case-09 | fail→pass | 14,385 | 6,554 | -54% | 1 | 1 | 0% | 2,217 | 1,855 | -16% | 0 | 0 | — |
case-10 | fail→pass | 6,669 | 2,747 | -59% | 1 | 1 | 0% | 1,039 | 1,221 | +18% | 0 | 0 | — |
case-11 | fail→pass | 9,687 | 3,188 | -67% | 1 | 1 | 0% | 1,512 | 1,201 | -21% | 0 | 0 | — |
case-18 | fail→pass | 12,625 | 6,286 | -50% | 1 | 1 | 0% | 1,912 | 1,814 | -5% | 0 | 0 | — |
case-12 | fail→pass | 47,552 | 3,293 | -93% | 1 | 1 | 0% | 2,824 | 1,277 | -55% | 0 | 0 | — |
case-13 | fail→pass | 10,935 | 4,235 | -61% | 1 | 1 | 0% | 1,888 | 1,521 | -19% | 0 | 0 | — |
case-14 | fail→pass | 7,646 | 3,914 | -49% | 1 | 1 | 0% | 1,301 | 1,466 | +13% | 0 | 0 | — |
case-15 | fail→pass | 10,700 | 5,554 | -48% | 1 | 1 | 0% | 1,825 | 1,726 | -5% | 0 | 0 | — |
case-16 | pass→pass | 9,634 | 6,565 | -32% | 1 | 1 | 0% | 1,500 | 1,700 | +13% | 0 | 0 | — |
case-17 | fail→pass | 11,119 | 3,186 | -71% | 1 | 1 | 0% | 1,615 | 1,297 | -20% | 0 | 0 | — |
case-19 | fail→pass | 34,646 | 2,224 | -94% | 1 | 1 | 0% | 5,632 | 1,123 | -80% | 0 | 0 | — |
case-20 | fail→pass | 11,307 | 5,266 | -53% | 1 | 1 | 0% | 1,808 | 1,664 | -8% | 0 | 0 | — |
case-21 | pass→pass | 10,645 | 3,794 | -64% | 1 | 1 | 0% | 1,707 | 1,404 | -18% | 0 | 0 | — |
case-22 | pass→pass | 9,299 | 5,261 | -43% | 1 | 1 | 0% | 1,671 | 1,734 | +4% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 21 counted toward the lift figure. The other 1 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +77 percentage points is the difference between those two pass rates over the 21 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.