mirror of
https://github.com/imjasonh/apidiff-action
synced 2026-07-06 22:52:43 +00:00
Add CLAUDE.md for Claude Code guidance
This file provides essential guidance for future Claude instances working on this repository, including: - Common development commands - High-level architecture overview - Testing structure and local testing instructions - Build process details - Key design decisions 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
ca7b01f792
commit
068aae0845
1 changed files with 105 additions and 0 deletions
105
CLAUDE.md
Normal file
105
CLAUDE.md
Normal file
|
|
@ -0,0 +1,105 @@
|
|||
# CLAUDE.md
|
||||
|
||||
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||
|
||||
## Overview
|
||||
|
||||
This is a GitHub Action written in Node.js that detects breaking API changes in Go code using the official `golang.org/x/exp/cmd/apidiff` tool. It analyzes Go API compatibility between commits and can comment on pull requests with detailed change reports.
|
||||
|
||||
## Common Commands
|
||||
|
||||
### Development
|
||||
|
||||
```bash
|
||||
# Install dependencies
|
||||
npm ci
|
||||
|
||||
# Run tests
|
||||
npm test
|
||||
|
||||
# Run linting
|
||||
npm run lint
|
||||
|
||||
# Run formatter
|
||||
npm run format
|
||||
|
||||
# Build the action (compiles to dist/)
|
||||
npm run build
|
||||
|
||||
# Run pre-commit hooks manually
|
||||
pre-commit run --all-files
|
||||
```
|
||||
|
||||
### Testing the Action Locally
|
||||
|
||||
The action supports testing with environment variables:
|
||||
|
||||
```bash
|
||||
# Test with directories
|
||||
INPUT_OLD=testdata/break/old INPUT_NEW=testdata/break/new node index.js
|
||||
|
||||
# Test with git refs
|
||||
INPUT_OLD=HEAD~1 INPUT_NEW=HEAD node index.js
|
||||
```
|
||||
|
||||
## Architecture
|
||||
|
||||
### Core Components
|
||||
|
||||
1. **index.js** - Main entry point that:
|
||||
|
||||
- Reads GitHub Action inputs
|
||||
- Determines which commits/directories to compare
|
||||
- Orchestrates the apidiff run, parsing, and PR commenting
|
||||
- Sets action outputs
|
||||
|
||||
2. **lib/apidiff.js** - Handles running the official apidiff tool:
|
||||
|
||||
- Installs `golang.org/x/exp/cmd/apidiff` if not present
|
||||
- Supports both git refs and directory comparisons
|
||||
- For directories: creates export files first, then compares them
|
||||
- For git refs: runs apidiff directly on the commits
|
||||
|
||||
3. **lib/parser.js** - Parses apidiff text output:
|
||||
|
||||
- Extracts breaking and compatible changes by package
|
||||
- Converts to structured format
|
||||
- Generates markdown reports for PR comments
|
||||
|
||||
4. **lib/commenter.js** - Manages PR comments:
|
||||
- Creates or updates existing comments (identified by hidden tag)
|
||||
- Requires `pull-requests: write` permission
|
||||
- Uses GitHub Actions toolkit for API access
|
||||
|
||||
### Testing Structure
|
||||
|
||||
The `testdata/` directory contains test cases:
|
||||
|
||||
- `clean/` - No API changes
|
||||
- `safe/` - Only compatible changes (additions)
|
||||
- `break/` - Contains breaking changes
|
||||
|
||||
Each test case has `old/` and `new/` subdirectories with Go code.
|
||||
|
||||
### Build Process
|
||||
|
||||
The action uses `@vercel/ncc` to compile all dependencies into a single `dist/index.js` file. This is required for GitHub Actions and must be committed to the repository.
|
||||
|
||||
### Pre-commit Hooks
|
||||
|
||||
Configured with husky to run:
|
||||
|
||||
- ESLint and Prettier on JS files
|
||||
- Pretty-format-json on JSON files (excluding package-lock.json)
|
||||
- Builds dist/ and verifies it's up to date
|
||||
|
||||
## Key Design Decisions
|
||||
|
||||
1. **Node.js wrapper around Go tool**: Rather than reimplementing apidiff, this action wraps the official tool
|
||||
2. **Support for both directories and git refs**: Allows testing without git commits
|
||||
3. **Structured parsing**: Converts free-text apidiff output into structured data for better formatting
|
||||
4. **Comment management**: Updates existing comments rather than creating duplicates
|
||||
|
||||
## Workflow Guidance
|
||||
|
||||
- When you open a PR, enable auto-merge, and watch CI checks until they complete and the PR merges. If CI fails, use the gh CLI to diagnose the error
|
||||
Loading…
Add table
Add a link
Reference in a new issue