metal
정보
Metal 스킬은 코드 저장소를 분석하여 프로젝트의 개념적 본질(프로젝트가 무엇을 하는지와 누가 운영하는지)을 표준화된 에이전트/스킬/팀 정의로 추출합니다. 이는 온보딩이나 에이전트 시스템 부트스트래핑 시 구현 세부사항을 복제하지 않고도 개발자가 프로젝트 아키텍처를 빠르게 이해하도록 돕습니다. 프로젝트 DNA 연구, 참조 구현으로부터 스킬 라이브러리 생성, 또는 코드베이스 간 교차 수분 가속화에 활용하세요.
빠른 설치
Claude Code
추천npx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/metalClaude Code에서 이 명령을 복사하여 붙여넣어 스킬을 설치하세요
문서
Metal
リポジトリの概念的DNA — その役割、手順、調整パターン — を汎用的なagentskills.io定義として抽出する。鉱石から貴金属を抽出するように、このスキルはプロジェクトが何であるか(そのエッセンス)と何をするか(その実装)を分離し、プロジェクトの組織的ゲノムを捕捉する再利用可能なスキル、エージェント、チーム定義を生成する — コードベースを再現することなく。
使用タイミング
- 新しいコードベースにオンボーディングし、コードに飛び込む前にその概念的アーキテクチャをマッピングしたい時
- 既存のプロジェクトからエージェントシステムをブートストラップする時 — 暗黙的なワークフローを明示的なスキル/エージェント/チーム定義に変換する
- クロスポリネーションのためにプロジェクトの組織的DNAを研究する時
- リファレンス実装に触発されたスキル/エージェント/チームライブラリを作成する時(コピーせずに)
- プロジェクトの構造が作成者のメンタルモデルとドメイン専門知識について何を明らかにするかを理解する時
入力
- 必須: リポジトリまたはプロジェクトルートディレクトリへのパス
- 必須: 目的の声明 — なぜエッセンスを抽出するのか?(オンボーディング、ブートストラップ、研究、またはクロスポリネーション)
- 任意: フォーカスドメイン — プロジェクトの特定の領域に集中する(デフォルト: 全体)
- 任意: 出力深度 —
survey(調査+分析のみ)、extract(完全な手順)、またはreport(抽出+書面レポート)(デフォルト:extract) - 任意: 最大抽出数 — 生成するスキル+エージェント+チームの合計上限(デフォルト: 15)
鉱石テスト
すべての抽出における中心的な品質基準:
この概念は完全に異なる実装で存在しうるか?
はいの場合 — それはmetal(エッセンス)である。抽出する。 いいえの場合 — それはgangue(実装の詳細)である。残す。
例: 天気アプリの「外部データソースを統合する」という概念はmetalである — サードパーティデータを取得するどのプロジェクトにも適用される。しかし「OpenWeatherMap v3 JSONレスポンスを解析する」はgangueである — 1つのAPIに固有のものである。
抽出されたスキルは特定のインスタンスではなく、タスクのクラスを記述すべきである。抽出されたエージェントはその人ではなく、役割を記述すべきである。抽出されたチームは組織図ではなく、調整パターンを記述すべきである。
手順
ステップ1: 調査 — 鉱床を調査する
判断なしにリポジトリ構造を調査する。採掘の前に地形をマッピングする。
- ディレクトリツリーをGlobしてプロジェクトの形を理解する:
- ソースディレクトリとその組織パターン(機能別、レイヤー別、ドメイン別)
- 設定ファイル:
package.json、DESCRIPTION、setup.py、Cargo.toml、go.mod、Makefile - ドキュメント:
README.md、CLAUDE.md、CONTRIBUTING.md、アーキテクチャドキュメント - CI/CD:
.github/workflows/、Dockerfile、デプロイメント設定 - テストディレクトリとその構造
- プロジェクトの自己記述(README、パッケージマニフェスト)を読み、その宣言された目的を理解する
- タイプ/言語別にファイルを数えてスコープを把握し、主要な技術を特定する
- プロジェクトの境界を特定する — どこで始まりどこで終わるか、何に依存し何を提供するか
- 調査レポートを作成する:
Project: [name]
Declared Purpose: [from README/manifest]
Languages: [primary, secondary]
Size: [file count, approx LOC]
Shape: [monorepo/library/app/framework/docs]
External Surface: [CLI/API/UI/library exports/none]
期待結果: 事実に基づく調査 — 何がここにあるか、どの程度の規模か、プロジェクトが何であると主張しているか。まだ分類や判断はない。レポートはレビューではなく、地質調査のように読めること。
失敗時: リポジトリにREADMEやマニフェストがない場合、ディレクトリ名、ファイル内容、テストの記述から目的を推測する。プロジェクトが大きすぎる場合(ソースファイル>1000)、最もアクティブなディレクトリにスコープを絞る(gitログの頻度やREADMEの参照を使用する)。
ステップ2: 分析 — 組成を分析する
代表的なファイルを読み、プロジェクトが概念レベルで何をするかを理解する。
- プロジェクトの異なる領域から5-10の代表的なファイルをサンプリングする — 網羅的ではないが多様に:
- エントリーポイント(メインファイル、ルートハンドラー、CLIコマンド)
- コアロジック(最もインポート/参照されるモジュール)
- テスト(実装よりも意図された動作を明確に明らかにする)
- 設定(運用上の懸念とデプロイメントコンテキストを明らかにする)
- サンプリングした各領域について特定する:
- ドメイン: プロジェクトはどの主題領域に触れるか?(例: 「認証」「データ変換」「レポーティング」)
- 動詞: プロジェクトはどのアクションを実行するか?(例: 「検証」「変換」「デプロイ」「通知」)
- 役割: コードはどの人間またはシステムのアクターに奉仕するか?(例: 「データエンジニア」「エンドユーザー」「レビュアー」)
- フロー: どのアクションのシーケンスがワークフローを形成するか?(例: 「取り込み → 検証 → 変換 → 保存」)
- 各発見について分類する:
- 本質的: この問題を解決するどの実装にも存在する
- 偶発的: この実装の技術選択に固有
- 分析レポートを作成する: ドメイン、動詞、役割、フローの表に本質的/偶発的のタグを付ける
期待結果: コードのウォークスルーではなく、ドメイン用語集のように読めるプロジェクトの概念マップ。技術スタックに馴染みのない人がこのレポートからプロジェクトが何をするかを理解できること。
失敗時: コードベースが不透明な場合(重度のメタプログラミング、生成されたコード、または難読化)、ソースコードよりもテストとドキュメントに頼る。テストが存在しない場合、意図を読み取るためにコミットメッセージを読む。
ステップ3: 瞑想 — 実装バイアスを解放する
コードを読むことから生じる認知的アンカリングをクリアするために一時停止する。
- どのフレームワーク、言語、またはアーキテクチャパターンがメンタルモデルを支配しているかに気づく — ラベルを付ける
- HOWへの執着を解放する:「このプロジェクトはReactを使用している」は「このプロジェクトにはユーザーインターフェースレイヤーがある」になる。「PostgreSQLを使用している」は「永続的な構造化ストレージがある」になる。
- 分析レポートの各発見について鉱石テストを適用する:
- 「外部データソースを統合する」— どこにでも存在しうる? はい → metal
- 「Axiosインターセプターを設定する」— どこにでも存在しうる? いいえ → gangue
- 鉱石テストに失敗した発見をより高い抽象レベルで書き直す
- 複数の視点が役立つ場合、以下のレンズを通じてプロジェクトを考慮する:
- 考古学者: コードの構造は作成者のメンタルモデルについて何を明らかにするか?
- 生物学者: 再現可能なゲノムvs特定の表現型は何か?
- 音楽理論家: 形式(ソナタ、ロンド)vs特定の音符は何か?
- 地図製作者: どの抽象レベルが有用なトポロジーを捕捉するか?
期待結果: 分析レポートからフレームワーク固有の言語がなくなっていること。すべての発見が鉱石テストを通過する。概念はポータブルに感じられる — どの言語やフレームワークのプロジェクトにも適用できる。
失敗時: バイアスが持続する場合(発見が特定の技術を参照し続ける)、反転を試みる:「このプロジェクトが完全に異なるスタックで書き直された場合、どの概念が生き残るか?」それだけがmetalである。
ステップ4: 精錬 — Metalをスラグから分離する
核心的な抽出ステップ。各本質的概念をスキル、エージェント、またはチームに分類する。
- 精製された分析レポートの各本質的概念について、そのタイプを決定する:
Classification Criteria:
+--------+----------------------------+----------------------------+----------------------------+
| Type | What to Look For | Naming Convention | Test Question |
+--------+----------------------------+----------------------------+----------------------------+
| SKILL | Repeatable procedures, | Verb-first kebab-case: | "Could an agent follow |
| | workflows, transformations | validate-input, | this as a step-by-step |
| | with clear inputs/outputs | deploy-artifact | procedure?" |
+--------+----------------------------+----------------------------+----------------------------+
| AGENT | Persistent roles, domain | Noun/role kebab-case: | "Does this require ongoing |
| | expertise, judgment calls, | data-engineer, | context, expertise, or a |
| | communication styles | quality-reviewer | specific communication |
| | | | style?" |
+--------+----------------------------+----------------------------+----------------------------+
| TEAM | Multi-role coordination, | Group descriptor: | "Does this need more than |
| | handoffs, reviews, | pipeline-ops, | one distinct perspective |
| | parallel workstreams | review-board | to accomplish?" |
+--------+----------------------------+----------------------------+----------------------------+
-
抽出された各要素について:
- 汎用化された名前を割り当てる — プロジェクト固有ではなく。「UserAuthService」は
identity-manager(エージェント)になる。「deployToAWS()」はdeploy-artifact(スキル)になる。 - ソースプロジェクトを知らなくても意味が通じる1行の説明を書く
- 派生元のソース概念を記録する(再現のためではなく、追跡可能性のため)
- 鉱石テストを最終的にもう一度適用する
- 汎用化された名前を割り当てる — プロジェクト固有ではなく。「UserAuthService」は
-
一般的な分類エラーを防ぐ:
- すべての関数がスキルではない — 個別の操作ではなく手順を探す
- すべてのモジュールがエージェントではない — 判断を必要とする役割を探す
- すべてのコラボレーションがチームではない — 異なる専門性を持つ調整パターンを探す
- ほとんどのプロジェクトは3-8のスキル、2-4のエージェント、0-2のチームを生成する。20以上ある場合、抽出が細かすぎる。
期待結果: 各項目にタイプ(スキル/エージェント/チーム)、汎用化された名前、1行の説明がある分類されたインベントリ。ソースプロジェクトの特定の技術、API、またはデータ構造を参照する項目がないこと。
失敗時: 分類が曖昧な場合(これはスキルかエージェントか?)、問いかける:「これは何かをすること(スキル)か、何かをする誰かであること(エージェント)か?」スキルはレシピ、エージェントはシェフである。それでも不明な場合、デフォルトでスキルとする — スキルは後で構成しやすい。
ステップ5: 癒し — 抽出品質を検証する
抽出が正直かどうかを評価する — 多すぎず少なすぎず。
-
過剰抽出チェック: 抽出された各定義を読み、問いかける:
- 元のプロジェクトの独自ロジックをこれから再構築できるか? → 詳細すぎる
- 特定のライブラリ、API、データベーススキーマ、またはファイルパスを参照しているか? → まだgangue
- これは完全な実装手順か概念レベルのスケッチか? → スケッチであるべき
-
過少抽出チェック: 抽出された定義のみを(ソースプロジェクトなしで)表示し、問いかける:
- これらに触発されたプロジェクトの種類を理解できるか? → はいであるべき
- 定義はプロジェクトの本質的な性質を捕捉しているか? → はいであるべき
- 表現されていない主要なプロジェクト機能があるか? → いいえであるべき
-
汎用化チェック: 各定義について:
- 名前は異なる技術スタックで意味が通じるか? → はいであるべき
- 説明はフレームワークに依存しないか? → はいであるべき
- この定義は完全に異なるドメインのプロジェクトに有用か? → 理想的にはい
-
バランスチェック: 抽出比率をレビューする:
- 3-8のスキル、2-4のエージェント、0-2のチームがフォーカスされたプロジェクトの典型
- 合計3未満の抽出は過少抽出を示唆する
- 合計15以上は過剰抽出または不十分な汎用化を示唆する
期待結果: 抽出が適切な抽象レベルにあるという確信。各定義は異なる土壌で成長できる種であり、元の庭でしか生き残れない挿し木ではない。
失敗時: 過剰抽出の場合、抽象レベルを上げる — 特定のスキルをより広いものに統合し、類似のエージェントを単一の役割に集約する。過少抽出の場合、ステップ2に戻り追加ファイルをサンプリングする。汎用化チェックが失敗した場合、技術への参照を除去して説明を書き直す。
ステップ6: 鋳造 — Metalを型に流し込む
agentskills.io標準の出力ドキュメントを生成する。
- 抽出された各スキルについて、骨格的な定義を書く:
# Skill: [generalized-name]
name: [generalized-name]
description: [one-line, framework-agnostic]
domain: [closest domain from the 52 existing domains, or suggest a new one]
complexity: [basic/intermediate/advanced]
# Concept-level procedure (3-5 steps, NOT full implementation):
# Step 1: [high-level action]
# Step 2: [high-level action]
# Step 3: [high-level action]
# Derived from: [source concept in original project]
- 抽出された各エージェントについて、骨格的な定義を書く:
# Agent: [role-name]
name: [role-name]
description: [one-line purpose]
tools: [minimal tool set needed]
skills: [list of extracted skills this agent would carry]
# Derived from: [source role/module in original project]
- 抽出された各チームについて、骨格的な定義を書く:
# Team: [group-name]
name: [group-name]
description: [one-line purpose]
lead: [lead agent from extracted agents]
members: [list of member agents]
coordination: [hub-and-spoke/sequential/parallel/adaptive]
# Derived from: [source workflow/process in original project]
- すべての抽出を分析レポートにまとめる — スキル、エージェント、チームのセクションと要約テーブルを含む単一のドキュメント
期待結果: agentskills.io形式のすべての抽出定義を含む構造化されたレポート。各定義は骨格的(概念レベル、実装レベルではない)であり、create-skill、create-agent、またはcreate-teamスキルが詳細化する出発点として機能できること。
失敗時: 出力が15項目を超える場合、中心性で優先順位を付ける — このプロジェクトのドメインに最もユニークな概念を保持する。ほとんどのプロジェクトに存在する汎用概念(「manage-configuration」のような)は、異常なひねりがない限り削除すべきである。
ステップ7: 焼き入れ — 最終検証
完全な抽出を検証し、要約を作成する。
- 抽出を数える: Nスキル、Nエージェント、Nチーム
- カバレッジを評価する: プロジェクトの主要なドメインをまたいでいるか?
- 独立性を検証する: ソースプロジェクトのコンテキストなしで各定義を読む — 単独で成立するか?
- 完全なセットに対して鉱石テストを最終的に実行する:
Temper Assessment:
+-----+---------------------------+----------+------------------------------------+
| # | Name | Type | Ore Test Result |
+-----+---------------------------+----------+------------------------------------+
| 1 | [name] | skill | PASS / FAIL (reason) |
| 2 | [name] | agent | PASS / FAIL (reason) |
| ... | ... | ... | ... |
+-----+---------------------------+----------+------------------------------------+
- 最終要約を作成する:
- 合計抽出数(スキル / エージェント / チーム)
- カバレッジ評価(どのプロジェクトドメインが表現されているか)
- 確信レベル(高 / 中 / 低)と根拠
- 推奨される次のステップ: どの抽出定義を最初に詳細化すべきか
期待結果: 要約テーブル、確信評価、実行可能な次のステップを含む検証済みの分析レポート。レポートは自己完結的であること — ソースプロジェクトを見たことがない人が読んで抽出された概念を理解できること。
失敗時: 項目の20%以上が最終鉱石テストに失敗した場合、ステップ4(精錬)に戻り、より高い抽象レベルで再抽出する。カバレッジが特定されたドメインの60%未満の場合、ステップ2(分析)に戻り追加ファイルをサンプリングする。
バリデーション
- 調査レポートがプロジェクトの構造、言語、規模、宣言された目的をカバーしている
- 分析がドメイン、動詞、役割、フローを本質的/偶発的分類で特定している
- 瞑想チェックポイントが実装バイアスをクリアしている — 出力にフレームワーク固有の言語がない
- 抽出されたすべての要素が鉱石テストを通過している(実装の詳細ではなくエッセンス)
- スキルは動詞で、エージェントは名詞で、チームはグループ記述子で名前が付けられている
- すべての名前が汎用化されている — プロジェクト固有の参照がない
- 抽出数が典型的な範囲内にある(合計5-15、1でも30でもない)
- 出力定義がagentskills.io形式(フロントマター+セクション)に従っている
- 過剰抽出と過少抽出のチェックの両方が通過している
- 最終的な焼き入れ評価がカウント、カバレッジ、確信度、次のステップを含んでいる
- 完全な分析レポートがソースプロジェクトへのアクセスなしで理解可能である
よくある落とし穴
- ディレクトリ構造のミラーリング: 横断的な概念を抽出する代わりに、ソースファイルごとに1つのスキルを生成すること。metalはプロジェクトのファイルシステムではなく概念的構造を反映すべきである。20ファイルのプロジェクトは20のスキルを持たない。
- フレームワーク崇拝:「configure-nextjs-api-routes」ではなく「define-api-endpoints」を抽出する。フレームワークを除去し、パターンを保持する。鉱石テストがこれを捕捉する:「これはNext.jsなしで存在しうるか?」いいえなら、gangueである。
- 役割の膨張: すべてのモジュールに対してエージェントを作成すること。ほとんどのプロジェクトには異なる専門知識を必要とする本当の役割が2-5あり、20ではない。機能的な違いではなく、判断とコミュニケーションスタイルの違いを探す。
- 鉱石テストのスキップ: 最大の失敗モード。すべての出力は通過しなければならない:「この概念は完全に異なる実装で存在しうるか?」特定のライブラリ、API、またはデータスキーマを参照している場合、それはmetalではなくスラグである。
- 実装ガイドの生成: 抽出されたスキルは概念レベルのスケッチ(3-5の高レベルステップ)であるべきで、完全な実装手順ではない。
create-skillで詳細化される種であり、完成品ではない。50ステップの抽出は再現であり、エッセンスではない。 - 名前の汎用化不足:「UserAuthService」はクラス名であり、概念ではない。「identity-manager」は役割である。「manage-user-identity」はスキルである。特定から普遍へと汎用化する。
- 調整パターンの無視: チームは調整がしばしば暗黙的であるため、抽出が最も難しい。コードレビューワークフロー、デプロイメントパイプライン、システム間のデータハンドオフ、承認チェーンを探す — これらがチーム構造を明らかにする。
関連スキル
athanor— metalがプロジェクトにエッセンス抽出ではなく変革が必要であることを明らかにした場合chrysopoeia— コードレベルでの価値抽出; metalはコードの上の概念レベルで動作するtransmute— 抽出された概念をドメイン間またはパラダイム間で変換するcreate-skill— 抽出されたスキルスケッチを完全なSKILL.md実装に詳細化するcreate-agent— 抽出されたエージェントスケッチを完全なエージェント定義に詳細化するcreate-team— 抽出されたチームスケッチを完全なチーム構成に詳細化するobserve— 調査フェーズで馴染みのないドメインが明らかになった場合のより深い観察analyze-codebase-for-mcp— 補完的: metalは概念を抽出し、analyze-codebase-for-mcpはツールサーフェスを抽出するreview-codebase— 補完的: metalはエッセンスを抽出し、review-codebaseは品質を評価する
GitHub 저장소
연관 스킬
content-collections
메타이 스킬은 콘텐츠 콜렉션(Content Collections)을 위한 프로덕션 검증된 설정을 제공합니다. 콘텐츠 콜렉션은 Markdown/MDX 파일을 Zod 검증이 포함된 타입 안전한 데이터 콜렉션으로 변환해주는 TypeScript 최우선 도구입니다. 블로그, 문서 사이트 또는 콘텐츠 중심의 Vite + React 애플리케이션을 구축할 때 타입 안전성과 자동 콘텐츠 검증을 보장하기 위해 사용하세요. Vite 플러그인 구성과 MDX 컴파일부터 배포 최적화 및 스키마 검증에 이르기까지 모든 것을 다룹니다.
polymarket
메타이 스킬은 개발자들이 Polymarket 예측 시장 플랫폼을 활용한 애플리케이션을 구축할 수 있도록 지원하며, 거래 및 시장 데이터를 위한 API 통합 기능을 포함합니다. 또한 WebSocket을 통한 실시간 데이터 스트리밍을 제공하여 실시간 거래와 시장 활동을 모니터링할 수 있습니다. 이를 통해 거래 전략을 구현하거나 실시간 시장 업데이트를 처리하는 도구를 생성하는 데 활용할 수 있습니다.
creating-opencode-plugins
메타이 스킬은 개발자들이 명령어, 파일, LSP 작업 등 25개 이상의 이벤트 유형에 연결되는 OpenCode 플러그인을 만들 수 있도록 돕습니다. JavaScript/TypeScript 모듈을 위한 플러그인 구조, 이벤트 API 명세, 구현 패턴을 제공합니다. OpenCode AI 어시스턴트의 라이프사이클을 사용자 정의 이벤트 기반 로직으로 가로채거나, 모니터링하거나, 확장해야 할 때 사용하세요.
sglang
메타SGLang은 RadixAttention 프리픽스 캐싱을 활용하여 JSON, 정규식, 에이전트 워크플로우를 위한 고속 구조화 생성에 특화된 고성능 LLM 서빙 프레임워크입니다. 특히 반복되는 프리픽스가 있는 작업에서 상당히 빠른 추론 속도를 제공하여 복잡한 구조화 출력 및 다중 턴 대화에 이상적입니다. 제약 디코딩이 필요하거나 광범위한 프리픽스 공유가 있는 애플리케이션을 구축할 때는 vLLM과 같은 대안보다 SGLang을 선택하십시오.
