jpskill.com
💼 ビジネス コミュニティ

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本体の挙動とは独立した参考情報です。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
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
🪟 Windows (PowerShell)
$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. 1. 下の青いボタンを押して add-core-function.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → add-core-function フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

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