takt/docs/ci-cd.md
nrslib 4941f8eabf README を大幅改訂し、詳細情報を docs/ に分離
README を約950行から約270行に圧縮し、詳細は個別ドキュメントに分離した。
コンセプトを実態に合わせて再定義(4軸: すぐ始められる・実用的・再現可能・マルチエージェント)し、
基本ユースケースを takt → takt run のフローに修正した。
英語版・日本語版の両方を対応し、日本語版はネイティブ日本語で記述。
2026-02-19 21:20:31 +09:00

5.5 KiB

日本語

CI/CD Integration

TAKT can be integrated into CI/CD pipelines to automate task execution, PR reviews, and code generation. This guide covers GitHub Actions setup, pipeline mode options, and configuration for other CI systems.

GitHub Actions

TAKT provides the official takt-action for GitHub Actions integration.

Complete Workflow Example

name: TAKT

on:
  issue_comment:
    types: [created]

jobs:
  takt:
    if: contains(github.event.comment.body, '@takt')
    runs-on: ubuntu-latest
    permissions:
      contents: write
      issues: write
      pull-requests: write

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Run TAKT
        uses: nrslib/takt-action@main
        with:
          anthropic_api_key: ${{ secrets.TAKT_ANTHROPIC_API_KEY }}
          github_token: ${{ secrets.GITHUB_TOKEN }}

Permissions

The following permissions are required for takt-action to function correctly:

Permission Required For
contents: write Creating branches, committing, and pushing code
issues: write Reading and commenting on issues
pull-requests: write Creating and updating pull requests

Pipeline Mode

Specifying --pipeline enables non-interactive pipeline mode. It automatically creates a branch, runs the piece, commits, and pushes. This mode is designed for CI/CD automation where no human interaction is available.

In pipeline mode, PRs are not created unless --auto-pr is explicitly specified.

All Pipeline Options

Option Description
--pipeline Enable pipeline (non-interactive) mode -- Required for CI/automation
-t, --task <text> Task content (alternative to GitHub Issue)
-i, --issue <N> GitHub issue number (same as #N in interactive mode)
-w, --piece <name or path> Piece name or path to piece YAML file
-b, --branch <name> Specify branch name (auto-generated if omitted)
--auto-pr Create PR (interactive: skip confirmation, pipeline: enable PR)
--skip-git Skip branch creation, commit, and push (pipeline mode, piece-only)
--repo <owner/repo> Specify repository (for PR creation)
-q, --quiet Minimal output mode: suppress AI output (for CI)
--provider <name> Override agent provider (claude|codex|opencode|mock)
--model <name> Override agent model

Command Examples

Basic pipeline execution:

takt --pipeline --task "Fix bug"

Pipeline execution with automatic PR creation:

takt --pipeline --task "Fix bug" --auto-pr

Link a GitHub issue and create a PR:

takt --pipeline --issue 99 --auto-pr

Specify piece and branch name:

takt --pipeline --task "Fix bug" -w magi -b feat/fix-bug

Specify repository for PR creation:

takt --pipeline --task "Fix bug" --auto-pr --repo owner/repo

Piece execution only (skip branch creation, commit, push):

takt --pipeline --task "Fix bug" --skip-git

Minimal output mode (suppress AI output for CI logs):

takt --pipeline --task "Fix bug" --quiet

Pipeline Template Variables

Pipeline configuration in ~/.takt/config.yaml supports template variables for customizing commit messages and PR bodies:

pipeline:
  default_branch_prefix: "takt/"
  commit_message_template: "feat: {title} (#{issue})"
  pr_body_template: |
    ## Summary
    {issue_body}
    Closes #{issue}
Variable Available In Description
{title} Commit message Issue title
{issue} Commit message, PR body Issue number
{issue_body} PR body Issue body
{report} PR body Piece execution report

Other CI Systems

For CI systems other than GitHub Actions, install TAKT globally and use pipeline mode directly:

# Install takt
npm install -g takt

# Run in pipeline mode
takt --pipeline --task "Fix bug" --auto-pr --repo owner/repo

This approach works with any CI system that supports Node.js, including GitLab CI, CircleCI, Jenkins, Azure DevOps, and others.

Environment Variables

For authentication in CI environments, set the appropriate API key environment variable. These use TAKT-specific prefixes to avoid conflicts with other tools.

# For Claude (Anthropic)
export TAKT_ANTHROPIC_API_KEY=sk-ant-...

# For Codex (OpenAI)
export TAKT_OPENAI_API_KEY=sk-...

# For OpenCode
export TAKT_OPENCODE_API_KEY=...

Priority: Environment variables take precedence over config.yaml settings.

Note

: If you set an API key via environment variable, installing Claude Code, Codex, or OpenCode CLI is not necessary. TAKT directly calls the respective API.

Cost Considerations

TAKT uses AI APIs (Claude or OpenAI), which can incur significant costs, especially when tasks are auto-executed in CI/CD environments. Take the following precautions:

  • Monitor API usage: Set up billing alerts with your AI provider to avoid unexpected charges.
  • Use --quiet mode: Reduces output volume but does not reduce API calls.
  • Choose appropriate pieces: Simpler pieces (e.g., default-mini) use fewer API calls than multi-stage pieces (e.g., default with parallel reviews).
  • Limit CI triggers: Use conditional triggers (e.g., if: contains(github.event.comment.body, '@takt')) to prevent unintended executions.
  • Test with --provider mock: Use mock provider during CI pipeline development to avoid real API costs.