claude-skills/onboarding-wizard/SKILL.md
新規クライアントの初回面接時に、7本柱に沿った情報収集をガイドし、聞き漏らしを防止しながらNeo4jに構造化登録するスキル。「新規登録」「新しい利用者」「インテーク」「初回面接」「クライアントを追加」「初回アセスメント」などの発言時に必ずこのスキルを使用すること。面談メモやナラティブからの一括抽出にも対応する。
npx skillsauth add kazumasakawahara/nest-support onboarding-wizardInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
新規クライアントの登録で最も危険なのは「聞き漏らし」です。禁忌事項(NgAction)を聞き逃したまま支援が始まれば、二次被害につながります。キーパーソンの登録を忘れれば、緊急時に連絡先がわからない事態になります。
このスキルは、マニフェスト7本柱に沿って何を聞くべきかを体系的にガイドし、聞き取った内容を構造化してNeo4jに登録します。全てを初回で揃える必要はなく、優先度に沿って段階的に情報を蓄積していきます。
| ツール | 用途 |
|--------|------|
| neo4j:execute_query | 既存登録の重複確認(読み取り)・クライアント情報の登録(書き込み)。読み書き兼用ツール |
まず、同名または類似名のクライアントが既に登録されていないか確認する。
MATCH (c:Client)
WHERE c.name CONTAINS $nameFragment
RETURN c.name AS 氏名, c.dob AS 生年月日
名前の類似(漢字違い、ひらがな/カタカナ、旧姓等)にも注意する。該当がなければ次へ進む。
7本柱に沿って、優先度順に情報を収集する。ユーザーから面談メモやナラティブをまとめて受け取った場合は narrative-extractor スキルの抽出ルールに従って一括処理する。対話的に聞き取る場合は以下の順序でガイドする。
第1の柱: 本人性 (Identity & Narrative)
聞き取り項目:
第2の柱: ケアの暗黙知 (Care Instructions) — 安全に直結
聞き取り項目:
聞き方のコツ: 「〇〇するとどうなりますか?」「してはいけないことはありますか?」と具体的に聞く。親の語りから暗黙知を引き出すことが重要。
第3の柱: 危機管理ネットワーク (Safety Net)
聞き取り項目:
第4の柱: 法的基盤 (Legal Basis)
第5の柱: 親の機能移行 (Parental Transition)
resilience-checker スキルと連携第6の柱: 金銭的安全 (Financial Safety)
第7の柱: 多機関連携 (Multi-Agency Collaboration)
収集した情報をNeo4jに登録する。登録前に必ず内容をユーザーに確認すること。
MERGE (c:Client {name: $name})
SET c.dob = date($dob),
c.bloodType = $bloodType
RETURN c.name AS 氏名
クライアント配下のノードとしてリレーションごと MERGE する(再実行で重複せず、他クライアントとノードを共有しない。
グローバルな MERGE (ng:NgAction {action}) は同文の禁忌を持つ別クライアントとノードを共有し、riskLevel を相互に上書きするため禁止)。
MATCH (c:Client {name: $clientName})
MERGE (c)-[:MUST_AVOID]->(ng:NgAction {action: $action})
ON CREATE SET ng.reason = $reason, ng.riskLevel = $riskLevel
ON MATCH SET ng.reason = COALESCE($reason, ng.reason),
ng.riskLevel = COALESCE($riskLevel, ng.riskLevel)
RETURN ng.action AS 禁忌事項, ng.riskLevel AS リスクレベル
MATCH (c:Client {name: $clientName})
MERGE (c)-[:REQUIRES]->(cp:CarePreference {category: $category, instruction: $instruction})
ON CREATE SET cp.priority = $priority
ON MATCH SET cp.priority = COALESCE($priority, cp.priority)
RETURN cp.category AS カテゴリ
MATCH (c:Client {name: $clientName})
MERGE (con:Condition {name: $conditionName})
SET con.status = COALESCE($status, 'Active')
MERGE (c)-[:HAS_CONDITION]->(con)
RETURN con.name AS 特性
MATCH (c:Client {name: $clientName})
MERGE (c)-[r:HAS_KEY_PERSON]->(kp:KeyPerson {name: $kpName})
SET kp.phone = COALESCE($phone, kp.phone),
kp.relationship = COALESCE($relationship, kp.relationship),
kp.role = COALESCE($role, kp.role),
r.rank = COALESCE($rank, r.rank)
RETURN kp.name AS キーパーソン
MATCH (c:Client {name: $clientName})
MERGE (h:Hospital {name: $hospitalName})
SET h.specialty = $specialty,
h.phone = $phone,
h.doctor = $doctor
MERGE (c)-[:TREATED_AT]->(h)
RETURN h.name AS 医療機関
手帳種別(type)ごとにクライアント1人1ノード。発行日・状態はスキーマ規約どおり
リレーション側(HAS_CERTIFICATE {issuedDate, status})に持つ。
MATCH (c:Client {name: $clientName})
MERGE (c)-[r:HAS_CERTIFICATE]->(cert:Certificate {type: $certType})
SET cert.grade = COALESCE($grade, cert.grade),
cert.nextRenewalDate = CASE WHEN $nextRenewalDate IS NOT NULL
THEN date($nextRenewalDate) ELSE cert.nextRenewalDate END,
r.issuedDate = CASE WHEN $issuedDate IS NOT NULL
THEN date($issuedDate) ELSE r.issuedDate END,
r.status = COALESCE(r.status, 'Active')
RETURN cert.type AS 種類, cert.grade AS 等級
MATCH (c:Client {name: $clientName})
MERGE (c)-[:HAS_LEGAL_REP]->(g:Guardian {name: $guardianName})
SET g.type = COALESCE($guardianType, g.type),
g.phone = COALESCE($phone, g.phone),
g.organization = COALESCE($organization, g.organization)
RETURN g.name AS 後見人
CREATE (al:AuditLog {
timestamp: datetime(),
user: $user,
action: 'CREATE',
targetType: $targetType,
targetName: $targetName,
details: $details,
clientName: $clientName
})
RETURN al.timestamp AS 記録日時
登録後にプロフィールを取得し、不足情報を明示する。
MATCH (c:Client {name: $clientName})
OPTIONAL MATCH (c)-[:MUST_AVOID]->(ng:NgAction)
OPTIONAL MATCH (c)-[:REQUIRES]->(cp:CarePreference)
OPTIONAL MATCH (c)-[kpRel:HAS_KEY_PERSON]->(kp:KeyPerson)
OPTIONAL MATCH (c)-[:TREATED_AT]->(hosp:Hospital)
OPTIONAL MATCH (c)-[:HAS_CERTIFICATE]->(cert:Certificate)
OPTIONAL MATCH (c)-[:HAS_LEGAL_REP]->(g:Guardian)
OPTIONAL MATCH (c)<-[:IS_PARENT_OF|FAMILY_OF]-(r:Relative)
RETURN
c.name AS 氏名,
c.dob AS 生年月日,
count(DISTINCT ng) AS 禁忌登録数,
count(DISTINCT cp) AS 配慮事項数,
count(DISTINCT kp) AS キーパーソン数,
count(DISTINCT hosp) AS 医療機関数,
count(DISTINCT cert) AS 手帳数,
count(DISTINCT g) AS 後見人数,
count(DISTINCT r) AS 家族情報数
## 登録完了チェックリスト: [クライアント名]
### 必須項目(初回)
- [x/空] 氏名・生年月日
- [x/空] 禁忌事項(NgAction)が1件以上
- [x/空] キーパーソンが1名以上(rank 1)
- [x/空] かかりつけ医
### 推奨項目(初回〜2回目)
- [x/空] 手帳・受給者証の種類と更新日
- [x/空] 成年後見人等の情報
- [x/空] 主たる介護者(親)の情報
### 次回確認すべき項目
- [不足している項目のリスト]
ユーザーが面談メモや親の語りをまとめて提供した場合は、narrative-extractor スキルの抽出ルールに従ってJSON形式でデータを抽出し、確認後に一括登録する。
抽出時の最重要ルール:
| スキル | 連携タイミング |
|--------|---------------|
| narrative-extractor | 面談メモからの一括抽出 |
| resilience-checker | 第5の柱(CareRole)の登録後にカバー率診断 |
| ecomap-generator | 登録完了後にエコマップ自動生成 |
| neo4j-support-db | Cypherテンプレートの参照・プロフィール確認 |
tools
⚠️【非運用 / DECOMMISSIONED 2026-05】この生活困窮者自立支援スキルは廃止され、運用していません。決して使用・発火しないでください。対応する Neo4j(port 7688)・MCP サーバー(livelihood-support-db)も撤去済みで、クエリは通りません。ユーザーが生活困窮支援を明示的に要求した場合は、本機能が非運用である旨を伝えてください。
tools
WAM NET(障害福祉サービス等情報公表システム)からオープンデータを取得し、Neo4j親なき後支援データベースのServiceProviderノードを同期するスキル。差分更新、廃止事業所検出、更新レポート生成機能を提供。
tools
訪問・同行支援の前に、クライアントの禁忌事項・推奨ケア・直近の支援記録・更新期限を自動収集し、簡潔なブリーフィングシートを生成するスキル。「訪問準備」「訪問前に確認」「明日〇〇さんのところに行く」「同行支援の注意点」「ブリーフィング」などの発言時に必ずこのスキルを使用すること。訪問や面談の予定がある場合にも積極的に使用する。
testing
「もし親が倒れたら」をシミュレーションし、親が担っている機能(CareRole)の代替手段カバー率を診断するスキル。マニフェスト第5の柱「親の機能移行(Parental Transition)」を中核とし、未カバーのタスクに対する福祉サービス候補の検索も行う。「レジリエンス」「親なき後」「もしもの時」「親が倒れたら」「カバー率」「バックアップ体制」「機能移行」「親の入院」「親が認知症」などの話題で必ずこのスキルを使用すること。parent_downプロトコル発動時にも使用する。