AI Agent
Claude Code
Section titled “Claude Code”@file:OptIn(ExperimentalKatachiApi::class)
import me.tbsten.katachi.ExperimentalKatachiApiimport me.tbsten.katachi.dsl.architecture
val projectArchitecture = architecture { "AiAgent".group { claudeCode() }}
// roles/ClaudeCode.kt@file:OptIn(ExperimentalKatachiApi::class)
import me.tbsten.katachi.ExperimentalKatachiApiimport me.tbsten.katachi.dsl.DeclarationContainerScope
fun DeclarationContainerScope.claudeCode() = "ClaudeCode".group { "Rules" { summary = "Claude Code に読ませる指示ファイル"
layout { "**/CLAUDE.md".file() "**/AGENTS.md".file() ".claude/rules/**/*.md".file() } }
"Skills" { summary = "Claude Code のスキル"
layout { ".claude/skills/**/*".file() } }
"Agents" { summary = "Claude Code のサブエージェント定義"
layout { ".claude/agents/**/*.md".file() } }
"Commands" { summary = "Claude Code のスラッシュコマンド"
layout { ".claude/commands/**/*.md".file() } }
"OutputStyles" { summary = "Claude Code の出力スタイル"
layout { ".claude/output-styles/*.md".file() } }
"Hooks" { summary = "Claude Code のフックスクリプト"
layout { ".claude/hooks/**/*".file() } }
"Settings" { summary = "Claude Code の設定ファイル"
layout { ".claude/settings.json".file().optional() } }
"Mcp" { summary = "Claude Code の MCP サーバー設定"
layout { ".mcp.json".file().optional() } } }Cursor
Section titled “Cursor”@file:OptIn(ExperimentalKatachiApi::class)
import me.tbsten.katachi.ExperimentalKatachiApiimport me.tbsten.katachi.dsl.architecture
val projectArchitecture = architecture { "AiAgent".group { cursor() }}
// roles/Cursor.kt@file:OptIn(ExperimentalKatachiApi::class)
import me.tbsten.katachi.ExperimentalKatachiApiimport me.tbsten.katachi.dsl.DeclarationContainerScope
fun DeclarationContainerScope.cursor() = "Cursor".group { "Rules" { summary = "Cursor に読ませる指示ファイル"
layout { ".cursor/rules/**/*.mdc".file() "**/AGENTS.md".file() } }
"Skills" { summary = "Cursor のスキル"
layout { ".cursor/skills/**/*".file() } }
"Agents" { summary = "Cursor のサブエージェント定義"
layout { ".cursor/agents/*.md".file() } }
"Commands" { summary = "Cursor のコマンド"
layout { ".cursor/commands/*.md".file() } }
"HookConfig" { summary = "Cursor のフック設定ファイル"
layout { ".cursor/hooks.json".file().optional() } }
"HookScripts" { summary = "Cursor のフックスクリプト"
layout { ".cursor/hooks/*.sh".file() } }
"Mcp" { summary = "Cursor の MCP サーバー設定"
layout { ".cursor/mcp.json".file().optional() } }
"Environment" { summary = "Cursor の実行環境の設定"
layout { ".cursor/environment.json".file().optional() } }
"Ignore" { summary = "Cursor に読ませないファイルの指定"
layout { ".cursorignore".file().optional() ".cursorindexingignore".file().optional() } } }Windsurf (Devin Desktop)
Section titled “Windsurf (Devin Desktop)”@file:OptIn(ExperimentalKatachiApi::class)
import me.tbsten.katachi.ExperimentalKatachiApiimport me.tbsten.katachi.dsl.architecture
val projectArchitecture = architecture { "AiAgent".group { windsurf() }}
// roles/Windsurf.kt@file:OptIn(ExperimentalKatachiApi::class)
import me.tbsten.katachi.ExperimentalKatachiApiimport me.tbsten.katachi.dsl.DeclarationContainerScope
fun DeclarationContainerScope.windsurf() = "Windsurf".group { "Rules" { summary = "Windsurf に読ませる指示ファイル"
layout { ".devin/rules/*.md".file() "**/AGENTS.md".file() } }
"Skills" { summary = "Windsurf のスキル"
layout { ".devin/skills/**/*".file() } }
"Workflows" { summary = "Windsurf のワークフロー"
layout { ".devin/workflows/*.md".file() } }
"Hooks" { summary = "Windsurf のフック設定ファイル"
layout { ".devin/hooks.json".file().optional() } }
"Ignore" { summary = "Windsurf に読ませないファイルの指定"
layout { ".devinignore".file().optional() } }
"LegacyRules" { summary = "旧形式の Windsurf の指示ファイル"
layout { ".windsurfrules".file().optional() ".windsurf/rules/*.md".file() } }
"LegacySkills" { summary = "旧形式の Windsurf のスキル"
layout { ".windsurf/skills/**/*".file() } }
"LegacyWorkflows" { summary = "旧形式の Windsurf のワークフロー"
layout { ".windsurf/workflows/*.md".file() } } }GitHub Copilot
Section titled “GitHub Copilot”@file:OptIn(ExperimentalKatachiApi::class)
import me.tbsten.katachi.ExperimentalKatachiApiimport me.tbsten.katachi.dsl.architecture
val projectArchitecture = architecture { "AiAgent".group { githubCopilot() }}
// roles/GitHubCopilot.kt@file:OptIn(ExperimentalKatachiApi::class)
import me.tbsten.katachi.ExperimentalKatachiApiimport me.tbsten.katachi.dsl.DeclarationContainerScope
fun DeclarationContainerScope.githubCopilot() = "GitHubCopilot".group { "Instructions" { summary = "GitHub Copilot に読ませる指示ファイル"
layout { ".github/copilot-instructions.md".file().optional() ".github/instructions/**/*.instructions.md".file() "**/AGENTS.md".file() } }
"Skills" { summary = "GitHub Copilot のスキル"
layout { ".github/skills/**/*".file() } }
"Agents" { summary = "GitHub Copilot のカスタムエージェント定義"
layout { ".github/agents/*.agent.md".file() } }
"Prompts" { summary = "GitHub Copilot のプロンプトファイル"
layout { ".github/prompts/*.prompt.md".file() } }
"Hooks" { summary = "GitHub Copilot のフック設定ファイル"
layout { ".github/hooks/*.json".file() } }
"Mcp" { summary = "GitHub Copilot の MCP サーバー設定"
layout { ".vscode/mcp.json".file().optional() } }
"SetupSteps" { summary = "GitHub Copilot の実行環境を用意する workflow"
layout { // GitHub のレシピの Workflow(.github/workflows/*.yml)とも重なる ".github/workflows/copilot-setup-steps.yml".file().optional() } } }@file:OptIn(ExperimentalKatachiApi::class)
import me.tbsten.katachi.ExperimentalKatachiApiimport me.tbsten.katachi.dsl.architecture
val projectArchitecture = architecture { "AiAgent".group { cline() }}
// roles/Cline.kt@file:OptIn(ExperimentalKatachiApi::class)
import me.tbsten.katachi.ExperimentalKatachiApiimport me.tbsten.katachi.dsl.DeclarationContainerScope
fun DeclarationContainerScope.cline() = "Cline".group { "Rules" { summary = "Cline に読ませる指示ファイル"
layout { ".clinerules/**/*.md".file() ".cline/rules/**/*.md".file() "AGENTS.md".file().optional() } }
"Skills" { summary = "Cline のスキル"
layout { ".cline/skills/**/*".file() } }
"Agents" { summary = "Cline のエージェント定義"
layout { ".cline/agents.yaml".file().optional() } }
"Hooks" { summary = "Cline のフックスクリプト"
layout { ".cline/hooks/**/*".file() } }
"Ignore" { summary = "Cline に読ませないファイルの指定"
layout { ".clineignore".file().optional() } } }JetBrains Junie
Section titled “JetBrains Junie”@file:OptIn(ExperimentalKatachiApi::class)
import me.tbsten.katachi.ExperimentalKatachiApiimport me.tbsten.katachi.dsl.architecture
val projectArchitecture = architecture { "AiAgent".group { junie() }}
// roles/Junie.kt@file:OptIn(ExperimentalKatachiApi::class)
import me.tbsten.katachi.ExperimentalKatachiApiimport me.tbsten.katachi.dsl.DeclarationContainerScope
fun DeclarationContainerScope.junie() = "Junie".group { "Rules" { summary = "Junie に読ませる指示ファイル"
layout { ".junie/rules/*.md".file() ".junie/playbook.md".file().optional() ".junie/guidelines.md".file().optional() "**/AGENTS.md".file() } }
"Skills" { summary = "Junie のスキル"
layout { ".junie/skills/**/*".file() } }
"Commands" { summary = "Junie のコマンド"
layout { ".junie/commands/*.md".file() } }
"Mcp" { summary = "Junie の MCP サーバー設定"
layout { ".junie/mcp/mcp.json".file().optional() } }
"Config" { summary = "Junie の設定ファイル"
layout { ".junie/config.json".file().optional() } }
"Ignore" { summary = "Junie に読ませないファイルの指定"
layout { ".aiignore".file().optional() } } }OpenAI Codex
Section titled “OpenAI Codex”@file:OptIn(ExperimentalKatachiApi::class)
import me.tbsten.katachi.ExperimentalKatachiApiimport me.tbsten.katachi.dsl.architecture
val projectArchitecture = architecture { "AiAgent".group { codex() }}
// roles/Codex.kt@file:OptIn(ExperimentalKatachiApi::class)
import me.tbsten.katachi.ExperimentalKatachiApiimport me.tbsten.katachi.dsl.DeclarationContainerScope
fun DeclarationContainerScope.codex() = "Codex".group { "Rules" { summary = "Codex に読ませる指示ファイル"
layout { "**/AGENTS.md".file() } }
"Skills" { summary = "Codex のスキル"
layout { ".agents/skills/**/*".file() } }
"Config" { summary = "Codex の設定ファイル"
layout { ".codex/config.toml".file().optional() } }
"Hooks" { summary = "Codex のフック設定ファイル"
layout { ".codex/hooks.json".file().optional() } }
"SandboxRules" { summary = "Codex がコマンドを実行してよいかを決めるルール"
layout { ".codex/rules/*.rules".file() } } }Google Antigravity
Section titled “Google Antigravity”@file:OptIn(ExperimentalKatachiApi::class)
import me.tbsten.katachi.ExperimentalKatachiApiimport me.tbsten.katachi.dsl.architecture
val projectArchitecture = architecture { "AiAgent".group { antigravity() }}
// roles/Antigravity.kt@file:OptIn(ExperimentalKatachiApi::class)
import me.tbsten.katachi.ExperimentalKatachiApiimport me.tbsten.katachi.dsl.DeclarationContainerScope
fun DeclarationContainerScope.antigravity() = "Antigravity".group { "Rules" { summary = "Antigravity に読ませる指示ファイル"
layout { "**/AGENTS.md".file() "GEMINI.md".file().optional() ".agents/rules/**/*.md".file() } }
"Skills" { summary = "Antigravity のスキル"
layout { ".agents/skills/**/*".file() } }
"Agents" { summary = "Antigravity のエージェント定義"
layout { ".agents/agents/**/*.md".file() } }
"Mcp" { summary = "Antigravity の MCP サーバー設定"
layout { ".agents/mcp_config.json".file().optional() } }
"Hooks" { summary = "Antigravity のフック設定ファイル"
layout { ".agents/hooks.json".file().optional() } } }@file:OptIn(ExperimentalKatachiApi::class)
import me.tbsten.katachi.ExperimentalKatachiApiimport me.tbsten.katachi.dsl.architecture
val projectArchitecture = architecture { "AiAgent".group { aider() }}
// roles/Aider.kt@file:OptIn(ExperimentalKatachiApi::class)
import me.tbsten.katachi.ExperimentalKatachiApiimport me.tbsten.katachi.dsl.DeclarationContainerScope
fun DeclarationContainerScope.aider() = "Aider".group { "Conventions" { summary = "Aider に読ませる規約ファイル"
layout { "CONVENTIONS.md".file().optional() } }
"Settings" { summary = "Aider の設定ファイル"
layout { ".aider.conf.yml".file().optional() ".aider.model.settings.yml".file().optional() } }
"Ignore" { summary = "Aider に読ませないファイルの指定"
layout { ".aiderignore".file().optional() } } }