skills/apra-labs/bitbucket-devops/SKILL.md
Comprehensive Bitbucket pipeline automation using direct Node.js API calls. Monitor pipeline status, analyze failures, download logs, and trigger builds. Use this skill when the user asks to check pipeline status, find failing pipelines, download logs, trigger builds, or debug pipeline failures. No MCP approval prompts required - uses Bash tool with node commands.
npx skillsauth add aiskillstore/marketplace bitbucket-devopsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill provides comprehensive Bitbucket DevOps automation using direct Node.js API calls via the Bash tool. Built on the bitbucket-mcp client library.
Key Advantage: Uses direct Node.js calls (auto-approved) instead of MCP tools, eliminating the approval prompts issue from GitHub Issue #10801.
You MUST follow this three-tier fallback strategy for ALL Bitbucket operations. This is REQUIRED, not optional.
CRITICAL RULES:
node -e for inline Bitbucket API operationsYou MUST check these helpers FIRST before attempting any other approach.
These solve common workflows in a single command. If the user's request matches any of these patterns, you MUST use the corresponding helper.
Location: ~/.claude/skills/bitbucket-devops/lib/helpers.js
Available Commands:
get-latest-failed <workspace> <repo> - Get most recent failed pipelineget-latest <workspace> <repo> - Get most recent pipeline (any status)get-by-number <workspace> <repo> <build-number> - Find pipeline by build numberget-failed-steps <workspace> <repo> <pipeline-uuid> - Get all failed stepsdownload-failed-logs <workspace> <repo> <pipeline-uuid> <build-number> - Download all failed step logsget-info <workspace> <repo> <pipeline-uuid> - Get formatted pipeline + steps infoMUST use for: "latest failed build", "download logs for pipeline #123", "what failed in this build", "get pipeline by number"
Usage:
node ~/.claude/skills/bitbucket-devops/lib/helpers.js <command> <args>
Example:
# User: "What's the latest failing pipeline?"
# You MUST use:
node ~/.claude/skills/bitbucket-devops/lib/helpers.js get-latest-failed "workspace" "repo"
# DO NOT create a new script
# DO NOT use node -e
# DO NOT write custom API calls
ONLY use Tier 2 if NO Tier 1 helper matches the user's request.
Direct API wrappers for specific operations. You MUST use these for operations not covered by Tier 1 helpers.
Location: ~/.claude/skills/bitbucket-devops/bitbucket-mcp/dist/index-cli.js
Key Commands (see docs/REFERENCE.md for complete list):
Pipeline Operations:
list-pipelines <workspace> <repo> [limit]get-pipeline <workspace> <repo> <pipeline-uuid>get-pipeline-steps <workspace> <repo> <pipeline-uuid>get-step-logs <workspace> <repo> <pipeline-uuid> <step-uuid>run-pipeline <workspace> <repo> <branch> [pipeline-name] [variables-json]stop-pipeline <workspace> <repo> <pipeline-uuid>Pull Request Operations:
list-prs <workspace> <repo> [state] [limit]get-pr <workspace> <repo> <pr_id>approve-pr <workspace> <repo> <pr_id>merge-pr <workspace> <repo> <pr_id> [message] [strategy]decline-pr <workspace> <repo> <pr_id> [message]Repository Operations:
get-branching-model <workspace> <repo>list-repositories <workspace>Usage:
node ~/.claude/skills/bitbucket-devops/bitbucket-mcp/dist/index-cli.js <command> <args>
You MAY chain multiple Tier 2 commands - see docs/PATTERNS.md for examples.
ONLY use Tier 3 if BOTH Tier 1 AND Tier 2 cannot solve the request. This should be RARE.
Before using Tier 3, you MUST:
Documentation: ~/.claude/skills/bitbucket-devops/bitbucket-mcp/docs/
api-overview.md - Authentication, base URLs, rate limitspipelines-api.md - Complete pipeline API referencerepositories-api.md - Repository operationspull-requests-api.md - PR operations (future)Before performing ANY Bitbucket operation, you MUST:
Check Tier 1 helpers - Review the 6 helpers above. Does one solve this?
node ~/.claude/skills/bitbucket-devops/lib/helpers.js <command>Check Tier 2 CLI - Review the CLI commands above. Can one or more solve this?
node ~/.claude/skills/bitbucket-devops/bitbucket-mcp/dist/index-cli.js <command>Check Tier 3 docs - Read API docs. Is there a direct API call needed?
NEVER skip this process. NEVER create new .js files. ALWAYS use pre-built tools.
IMPORTANT: Bitbucket Cloud does NOT provide an API to download pipeline artifacts.
If a user asks to download build artifacts:
Tip: For programmatic artifact access, consider uploading to S3/Azure Blob Storage during your pipeline.
DO NOT: Search for undocumented endpoints - this has been thoroughly researched and no API exists.
Traditional pipeline debugging is slow: push code → wait → fail → investigate logs → fix → repeat (hours per cycle).
This skill enables a REPL-like experience for DevOps: Claude observes pipelines in real-time, analyzes failures instantly, suggests precise fixes, and iterates with you until builds pass - reducing debugging cycles from hours to minutes.
The Loop:
This transforms DevOps from slow batch processing into interactive, conversational development.
This skill uses the Bash tool (auto-approved in Claude Code) to run Node.js commands. Required:
Note: No MCP server required - bitbucket-mcp is used as a library via git submodule.
The skill directory is located at: ~/.claude/skills/bitbucket-devops/
Credentials are loaded with priority (first found wins):
./credentials.json or ./.bitbucket-credentials (current working directory)~/.bitbucket-credentials (home directory)~/.claude/skills/bitbucket-devops/credentials.jsonIMPORTANT: Different credentials for different operations
{
"url": "https://api.bitbucket.org/2.0",
"workspace": "your-workspace-name",
"user_email": "[email protected]",
"username": "your-workspace-name",
"password": "your-bitbucket-app-password"
}
Field explanations:
user_email: Your Bitbucket account email (for API authentication) - MUST contain @username: Your Bitbucket workspace slug (for git operations) - MUST NOT contain @password: App password from https://bitbucket.org/account/settings/app-passwords/
See docs/GIT_OPERATIONS.md for details on credential requirements.
Before any pipeline operation, determine the workspace and repository.
Auto-detect from git remote:
git_url=$(git config --get remote.origin.url 2>/dev/null)
if [[ "$git_url" =~ bitbucket.org[:/]([^/]+)/([^/.]+) ]]; then
WORKSPACE="${BASH_REMATCH[1]}"
REPO="${BASH_REMATCH[2]}"
echo "Detected: $WORKSPACE/$REPO"
fi
Or ask user: "What's your Bitbucket workspace and repository name?"
IMPORTANT: Use actual values in commands. Never use literal strings "workspace" or "repo".
node ~/.claude/skills/bitbucket-devops/lib/helpers.js \
get-latest-failed "workspace" "repo"
Present to user:
Latest failed pipeline:
- Pipeline #123
- Branch: main
- Commit: abc123d - "Fix bug in deployment"
- Status: FAILED
# Step 1: Get pipeline by build number
node ~/.claude/skills/bitbucket-devops/lib/helpers.js \
get-by-number "workspace" "repo" 123
# Step 2: Download all failed step logs
node ~/.claude/skills/bitbucket-devops/lib/helpers.js \
download-failed-logs "workspace" "repo" "{pipeline-uuid}" 123
Present to user:
Downloaded logs for 2 failed steps:
1. Deploy
- Saved to: .pipeline-logs/pipeline-123-Deploy.log
- Size: 12.4 KB
2. Integration_Tests
- Saved to: .pipeline-logs/pipeline-123-Integration_Tests.log
- Size: 45.2 KB
Important: Check log file size before displaying. If > 50KB, show summary only:
tail -n 100 .pipeline-logs/pipeline-123-Deploy.log
grep -i "error\|failed\|exception" .pipeline-logs/pipeline-123-Deploy.log
User: "Fix the failing build"
1. READ - Find and Analyze Failure:
node ~/.claude/skills/bitbucket-devops/lib/helpers.js get-latest-failed "workspace" "repo"
node ~/.claude/skills/bitbucket-devops/lib/helpers.js get-failed-steps "workspace" "repo" "{uuid}"
node ~/.claude/skills/bitbucket-devops/lib/helpers.js download-failed-logs "workspace" "repo" "{uuid}" 123
2. EVAL - Analyze the Logs:
grep -i "error\|failed\|exception\|fatal" .pipeline-logs/*.log
grep -i -A 5 -B 5 "error" .pipeline-logs/pipeline-*.log
3. PRINT - Suggest Fix:
Found the issue in Pipeline #123:
Error Type: TypeScript compilation error
Location: src/auth/service.ts:42
Error: Property 'userId' does not exist on type 'User'
Root Cause: The User interface was updated but this file wasn't
Suggested Fix:
Change line 42 from:
return user.userId
To:
return user.id
Should I apply this fix?
4. LOOP - Apply Fix and Re-Test:
# Apply fix using Edit tool
# Commit changes
git add src/auth/service.ts
git commit -m "Fix: Update User property reference from userId to id"
# Trigger new pipeline run
node ~/.claude/skills/bitbucket-devops/bitbucket-mcp/dist/index-cli.js \
run-pipeline "workspace" "repo" "branch-name"
# Monitor the new build
node ~/.claude/skills/bitbucket-devops/lib/helpers.js get-by-number "workspace" "repo" <new-build-number>
5. REPEAT or CELEBRATE:
This transforms hours of manual debugging into minutes of AI-assisted iteration.
For comprehensive coverage, refer to these detailed guides:
Logs are downloaded to .pipeline-logs/ in the directory where VSCode is opened (your working directory).
Structure:
/path/to/open-project/
├── .pipeline-logs/ ← Created automatically here
│ ├── pipeline-123-Deploy.log
│ ├── pipeline-123-Test.log
│ └── errors-only.txt
├── src/
└── ...
Important:
.pipeline-logs/filename.log.pipeline-logs/ to their project's .gitignore| Error | Cause | Solution |
|-------|-------|----------|
| "Pipeline not found" | Build number too old | Use get-latest-failed instead |
| "Logs unavailable" | Pipeline still running | Wait for completion |
| "No credential file found" | Missing credentials.json | Copy from credentials.json.template |
| "Node.js not found" | Node not installed | Install Node.js v18+ |
| "Submodule not initialized" | Git submodule missing | Run bash install.sh |
| "401 Unauthorized" | Wrong credentials | Check user_email (not username) in credentials.json |
| "Git auth failed" | Wrong username | Check username (not email) for git operations |
For detailed troubleshooting: See docs/TROUBLESHOOTING.md
This skill is built on bitbucket-mcp by Apra Labs, forked from @MatanYemini's original work.
Architecture: Uses bitbucket-mcp as a library (git submodule), NOT as an MCP server. This approach eliminates approval prompts while maintaining full API functionality.
License: CC BY 4.0 Maintained by: Apra Labs
development
Apple Human Interface Guidelines for content display components. Use this skill when the user asks about charts component, collection view, image view, web view, color well, image well, activity view, lockup, data visualization, content display, displaying images, rendering web content, color pickers, or presenting collections of items in Apple apps. Also use when the user says how should I display charts, what's the best way to show images, should I use a web view, how do I build a grid of items, what component shows media, or how do I present a share sheet. Cross-references: hig-foundations for color/typography/accessibility, hig-patterns for data visualization patterns, hig-components-layout for structural containers, hig-platforms for platform-specific component behavior.
tools
Automate HelpDesk tasks via Rube MCP (Composio): list tickets, manage views, use canned responses, and configure custom fields. Always search tools first for current schemas.
testing
Expert Haskell engineer specializing in advanced type systems, pure functional design, and high-reliability software. Use PROACTIVELY for type-level programming, concurrency, and architecture guidance.
tools
GraphQL gives clients exactly the data they need - no more, no less. One endpoint, typed schema, introspection. But the flexibility that makes it powerful also makes it dangerous. Without proper controls, clients can craft queries that bring down your server. This skill covers schema design, resolvers, DataLoader for N+1 prevention, federation for microservices, and client integration with Apollo/urql. Key insight: GraphQL is a contract. The schema is the API documentation. Design it carefully.