add-core-function
Catalyst-Relayに、ビジネスの中核となる新しいロジック関数(純粋関数、データ型操作、ライブラリで利用できるコードなど)を追加し、システムの機能拡張や効率化を実現するSkill。
📜 元の英語説明(参考)
Add new core business logic functions to Catalyst-Relay. Use when creating pure functions, ADT operations, or library-consumable code.
🇯🇵 日本人クリエイター向け解説
Catalyst-Relayに、ビジネスの中核となる新しいロジック関数(純粋関数、データ型操作、ライブラリで利用できるコードなど)を追加し、システムの機能拡張や効率化を実現するSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o add-core-function.zip https://jpskill.com/download/17279.zip && unzip -o add-core-function.zip && rm add-core-function.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/17279.zip -OutFile "$d\add-core-function.zip"; Expand-Archive "$d\add-core-function.zip" -DestinationPath $d -Force; ri "$d\add-core-function.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
add-core-function.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
add-core-functionフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
コア機能の追加
使用場面
- 新しい ADT 操作 (CRAUD, discovery, preview) の作成
- 純粋なビジネスロジック関数の追加
- ライブラリで利用可能な機能の実装
1ファイルにつき1関数
各コア機能は、それぞれ独自のファイルに記述します。複数の関数を1つのファイルに記述しないでください。
場所: src/core/{domain}/{function}.ts
core/adt/
├── index.ts # Barrel exports
├── types.ts # 共有型 (AdtRequestor, ObjectConfig)
├── helpers.ts # 内部ヘルパー (barrel からエクスポートされない)
│
├── craud/
│ ├── read.ts → readObject()
│ ├── create.ts → createObject()
│ └── ...
│
└── discovery/
├── packages.ts → getPackages()
└── ...
インポート階層
ファイルは、次の階層に従う必要があります (循環依存関係は禁止)。
types.ts (共有型、パッケージからのインポートなし)
↓
helpers.ts (内部ユーティリティ、types をインポート)
↓
subfolder files (../types と ../helpers をインポート)
↓
index.ts (barrel exports、サブフォルダからインポート)
相対パスのパターン:
../types— 共有型../helpers— 共有ヘルパー../../utils/xml— コアユーティリティ../../../types/result— グローバル型
関数ファイルのパターン
// src/core/adt/discovery/packages.ts
import type { AdtRequestor } from '../types';
import type { AsyncResult } from '../../../types/result';
export interface Package {
name: string;
description: string;
}
export async function getPackages(
requestor: AdtRequestor,
filter?: string
): AsyncResult<Package[]> {
// Implementation
const response = await requestor.get('/packages', { params: { filter } });
if (response.error) {
return [null, response.error];
}
return [parsePackages(response.data), null];
}
// Internal helper (not exported)
function parsePackages(xml: string): Package[] {
// ...
}
戻り値の型に関する規約
Go スタイルのエラータプルを使用します。
import type { AsyncResult } from '../../../types/result';
// 成功時は [data, null]、失敗時は [null, error] を返します
export async function someOperation(): AsyncResult<Data> {
// ...
}
Barrel Exports
パブリック API 用に index.ts に追加します。
// src/core/adt/index.ts
// Types
export type { AdtRequestor, ObjectConfig } from './types';
// Discovery
export { getPackages } from './discovery/packages';
export { getTree } from './discovery/tree';
// CRAUD
export { readObject } from './craud/read';
export { createObject } from './craud/create';
内部ヘルパー
barrel からエクスポートされないヘルパーは、helpers.ts に記述します。
// src/core/adt/helpers.ts
import type { AdtRequestor } from './types';
// Internal - index.ts からエクスポートされません
export function buildObjectUri(name: string, extension: string): string {
// ...
}
チェックリスト
- [ ] src/core/{domain}/{subfolder}/ に関数ファイルを作成する
- [ ] ファイルの先頭または ../types.ts で型を定義する
- [ ] 非同期関数には AsyncResult 戻り値の型を使用する
- [ ] インポート階層に従う (循環依存関係は禁止)
- [ ] パブリック API の場合は index.ts からエクスポートする
- [ ] 内部ヘルパーは helpers.ts に記述する
- [ ] 型チェックを実行する: bun run typecheck 📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
Adding Core Functions
When to Use
- Creating new ADT operations (CRAUD, discovery, preview)
- Adding pure business logic functions
- Implementing library-consumable functionality
One Function Per File
Each core function gets its own file. No multi-function files.
Location: src/core/{domain}/{function}.ts
core/adt/
├── index.ts # Barrel exports
├── types.ts # Shared types (AdtRequestor, ObjectConfig)
├── helpers.ts # Internal helpers (not exported from barrel)
│
├── craud/
│ ├── read.ts → readObject()
│ ├── create.ts → createObject()
│ └── ...
│
└── discovery/
├── packages.ts → getPackages()
└── ...
Import Hierarchy
Files must follow this hierarchy (no circular dependencies):
types.ts (shared types, no imports from package)
↓
helpers.ts (internal utilities, imports types)
↓
subfolder files (import ../types and ../helpers)
↓
index.ts (barrel exports, imports from subfolders)
Relative path patterns:
../types— shared types../helpers— shared helpers../../utils/xml— core utilities../../../types/result— global types
Function File Pattern
// src/core/adt/discovery/packages.ts
import type { AdtRequestor } from '../types';
import type { AsyncResult } from '../../../types/result';
export interface Package {
name: string;
description: string;
}
export async function getPackages(
requestor: AdtRequestor,
filter?: string
): AsyncResult<Package[]> {
// Implementation
const response = await requestor.get('/packages', { params: { filter } });
if (response.error) {
return [null, response.error];
}
return [parsePackages(response.data), null];
}
// Internal helper (not exported)
function parsePackages(xml: string): Package[] {
// ...
}
Return Type Convention
Use Go-style error tuples:
import type { AsyncResult } from '../../../types/result';
// Returns [data, null] on success, [null, error] on failure
export async function someOperation(): AsyncResult<Data> {
// ...
}
Barrel Exports
Add to index.ts for public API:
// src/core/adt/index.ts
// Types
export type { AdtRequestor, ObjectConfig } from './types';
// Discovery
export { getPackages } from './discovery/packages';
export { getTree } from './discovery/tree';
// CRAUD
export { readObject } from './craud/read';
export { createObject } from './craud/create';
Internal Helpers
Helpers not exported from barrel go in helpers.ts:
// src/core/adt/helpers.ts
import type { AdtRequestor } from './types';
// Internal - not exported from index.ts
export function buildObjectUri(name: string, extension: string): string {
// ...
}
Checklist
- [ ] Create function file in src/core/{domain}/{subfolder}/
- [ ] Define types at top of file or in ../types.ts
- [ ] Use AsyncResult return type for async functions
- [ ] Follow import hierarchy (no circular deps)
- [ ] Export from index.ts if public API
- [ ] Put internal helpers in helpers.ts
- [ ] Run typecheck: bun run typecheck