デザイン&モーション · huangserva/skill-prompt-generator

image-prompt-generator

スマートプロンプトジェネレーター v2.0 - ポートレート/クロスドメイン/デザインの3モードに対応し、意味理解、常識推論、一貫性チェックをサポート

L4 高権限 · 段階的認可と監査V1 コミット固定コマンド実行ファイル書き込みDual-pass Audit
Author huangservaGitHub huangserva/skill-prompt-generator ↗Stars 1486License 仅 README 末尾声明 "MIT License",仓库内无 LICENSE 文件(受版本控制的 98 个文件中无 LICENSE/LICENSE.md),gh api license=null,授权声明停留在文档层面Commit e951249840
管理レベルは Skill の能力と推奨統制措置を示すものであり、品質や安全性の認証、利用可否の判定ではありません。使用の可否はユーザーおよび管理者が決定します。Agent 環境によって制約が異なるため、自動保護を仮定しないでください。第三者製 Skill の著作権は原著作者に帰属し、利用リスクは利用者が負います。

1仕組みと動作原理

単一のSQLite要素データベース elements.db を唯一の素材ソースとして使用:1,246件の再利用可能なプロンプト要素(element)を生成プールとし、ジェネレーターは自由生成を行わず検索と連結のみを実行。

README.md
- **总元素数**: 1246
実測 elements.db(2,637,824バイト、12個の業務テーブル + sqlite_sequence):elements 1,246行、12個のdomain_id、70個のcategory_id、tags 2,324件、element_tags 5,127件、source_prompts 675件、design_templates 5件、design_variables 4件、element_variables 5件、generated_prompts 17件、prompt_elements 42件、element_usage_stats 27件。要素の実際の分布:portrait 502 / common 208 / design 166 / interior 79 / product 78 / art 70 / video 49 / creative 37 / scenario 34 / utility 10 / prompt_writing 9 / lifestyle 4(合計1,246件)。

ポートレート処理は「フレームワーク駆動型」:prompt_framework.yaml が7大フィールド(subject/facial/styling/expression/lighting/scene/technical)で構造を定義し、各フィールドをDBのcategoryへマッピング。framework_loader.py が読み込み、依存推論、Intent検証を担い、フィールド単位でDBを検索して要素を選択。

prompt_framework.yaml
# 人像提示词生成框架 - 7大类模板
framework_loader.py は FrameworkLoader.load/get_all_fields/get_required_fields/apply_dependencies/validate_intent、および FrameworkDrivenGenerator.generate_by_framework/query_all_candidates_by_framework を公開。末尾の ElementSelector.select_best_element/select_from_candidates_dict がスコアリングと選択を担当。prompt_framework.yaml は全389行で、db_category を介して elements.category_id を参照(例: eyes→eye_types)。

Skill自体は実行時プロセスではなく「エージェント向けの作業指示書」:SKILL.md がエージェント自身にPythonコードを実行させて core/ エンジンを呼び出させ、LLMが意味補完と候補選定を担う。

.claude/skills/intelligent-prompt-generator/SKILL.md
os.chdir('/Users/serva/.claude/skills/skill-prompt-generator')
SKILL.md の「呼び出し方法」セクションにはコピー可能なPythonスニペット(from core.cross_domain_generator import CrossDomainGenerator → generator.generate(user_input))が記載されており、エージェントはホスト環境でPythonを実行する必要がある。os.chdir には開発者のローカルパス /Users/serva/... がハードコードされており、別環境では書き換えないと elements.db を読み込めない。SKILL.md は全1,345行で、シェルコマンドの直接実行要求はない。

v2.0 の統合エントリポイントは入力を自動で3分類してルーティング:portrait(純粋な人物)/ cross_domain(人物 + アクションエフェクト)/ design(ポスター・カード)。CrossDomainGenerator.generate が3つのサブジェネレーターへ振り分け。

core/cross_domain_generator.py
generation_type = self.classify_generation_type(intent)
parse_user_input は中英キーワードテーブルを用いて性別、人種、年齢、アクション('龟派气功'/'kamehameha'→action=kamehameha)、スタイル('3d'/'蜡像'/'wax'→art_style=wax_figure_3d)、デザインスタイル('温馨可爱'/'现代简约')、デザイン要件('海报'/'卡片')を判別。classify_generation_type は action/energy や 3d/wax を検出すると cross_domain と判定し、それ以外の人物入力は portrait とする。

クロスドメイン合成:analyze_required_domains がIntentに応じて必要なdomainを累積(人物→portrait、アクション/エネルギー→video、3D/蝋人形→art、デザイン用語→design、常にcommonを追加)。各domainのcategoryリストに沿ってDBを順次検索し、要素の利用率を40.3%から79.9%へ向上。

core/cross_domain_query.py
required_domains = self.analyze_required_domains(intent)
同ファイル内の domains.add('common') により、汎用的なライティングや撮影技術要素が常に付与される。query_plan において、portrait は11カテゴリ(gender/age_range/ethnicity/eye_types/face_shapes/skin_tones/makeup_styles/hair_styles/hair_colors/expressions/poses)、video は scene_types/motion_effects/camera_movements、art は art_styles/special_effects を指定。

デザインモードは SQLite要素 + YAML変数のデュアルソース統合:design_bridge がDBから主体・技術要素を取得しつつ、YAMLから配色、ボーダー、装飾をサンプリングし、build_final_prompt が完全なデザイン仕様へと構築。

core/design_bridge.py
yaml_variables = self.yaml_sampler.sample_variables(style=design_style)
統合結果は content / design / technical の3バケットに分類され、フィールドマッピングと ', ' による結合のみを実行。YAMLVariableSampler は variables/{colors,borders,decorations}.yaml を読み込み、style('温馨可爱'/'现代简约')に応じてカラーパレットと値をランダム選定。_get_recent_values により直近で使用したパレットを回避(履歴上限100件)。実測 colors.yaml は2スタイル、10パレット、37色値(23+14)。borders は各スタイルで corner_radius 5値 × box_shadow 3 × border 2。decorations は可愛い系5種、モダン系4種。

変数サンプリングによる重複回避:SQLiteVariableSampler が直近100回のサンプリング履歴を保持し、element_variables テーブルと連携して要素をパラメータ化サンプリング。変数に合致した場合はサンプリング結果でテンプレートを置換。

core/variable_sampler.py
self.max_history = 100 # 保留最近100次采样历史
element_variables は core/schema_migration_v1.sql により作成(parameter_type は enum/range/boolean に限定、possible_values はJSON形式)。ただし同テーブルは実質5行のみ。クロスドメイン検索時に sample_element_with_variables が失敗または変数なしの場合は except ブランチで元の要素をそのまま使用。「変数化」は現時点でごく少数の要素にのみ適用されている。

ハードコードされたナレッジベースによる常識推論:人種→典型的な目の色/髪色、監督スタイル→ライティングキーワード、人物属性カテゴリの保護などのマッピングを IntelligentGenerator.load_knowledge() に定義。指定されていない属性の補完や、スタイル用語による人物属性の汚染を防止。

intelligent_generator.py
'ethnicity_typical_eyes': {
East_Asian→['black','dark brown','brown']、European→['blue','green','brown','hazel','grey']。ほかに ethnicity_typical_hair、style_types、director_lighting_styles(zhang_yimou/cinematic/film_noir、それぞれ lighting_keywords と required_elements を保持)、subject_attribute_categories を定義。一貫性チェック(check_consistency / resolve_conflicts)はこのマッピング群に基づいて機能する。

自己学習ループ:prompt-extractor がコーパスのクレンジング/クラスタリング/モジュール抽出を行い、universal-learner が6ステップのフロー(タイプ識別→ドメイン分類→要素抽出→タグ付け→再利用性スコアリング→DB書き込み)で要素を elements.db に反映。半自動運用であり人手によるレビューを前提とする設計。

.claude/skills/universal-learner/SKILL.md
**学习方式**: 半自动(生成报告 + 人工审核)
DB書き込みパスは modules/library_updater.md 内の db.add_element(...) 呼び出しを参照(名前の完全一致 + キーワードのJaccard類似度>0.8 による重複排除)。elements.learned_from の実測分布により実際に稼働した実績が確認できる:universal_learner_v2 861件、migrated_from_v2 104件、migrated_from_v4 81件、manual_learning 39件、VoxcatAI Twitter 18件、universal_learner 14件、universal_learner_skill_test 11件、batch_learner_v2_enhanced 10件、その他(39件はNULL)。

2コア機能

013モード統合生成エントリポイント(portrait / cross_domain / design の自動判別)
02ポートレート要素のインテリジェント選択:候補スコアリング + 全体最適(非貪欲法)選定
03一貫性チェックと競合の自動修正(人種/スタイル/時代の論理矛盾を解消)
04クロスドメイン要素合成による素材ライブラリ利用率の向上(40.3% → 79.9%)
05デザイン変数サンプリング:配色/ボーダー/装飾のスタイル別組み合わせ
06コーパス学習によるDB拡張:コミュニティのプロンプトから再利用可能な要素を抽出し elements.db へ書き戻し
07プロンプトのリバースアナリシス:優れたプロンプトから「特定要素の制御手法」をナレッジカードとして抽出
08生成履歴のDB保存 + 分析レコメンド(生成ごとに generated_prompts へ記録し prompt-analyzer で再利用)

3外部依存関係

KindDependency / Endpoint
packagepyyaml>=6.0
packageanthropic>=0.7.0(声明依赖但全仓 Python 代码零 import,仅 learner.md 伪代码示例引用)
clipython3(运行 core/ 引擎、preprocessor.py、xray_helper.py)
clibash(skill 自带测试脚本 shell)
clipython3 prompt_tool.py(prompt-master 旧架构声明的 CLI,脚本在 pin commit 的仓库内不存在)

4推奨統制措置と判定根拠

安全運用のための推奨統制措置
Agent 向け
段階的・都度認可、サンドボックス推奨
管理者向け
承認フロー、ロールバック可能、全履歴監査
判定根拠(ファイルパスと抜粋)
  • scripts/: ローカルスクリプトまたはコマンドの実行: core/cross_domain_generator.py(SKILL.md はエージェントにホスト上で実行するよう指示: from core.cross_doma
  • 本地工作目录: ファイルの読み書きと成果物の出力: extracted_results/elements.db —— save_generated_prompt が generated_prompts に書き込み
監査ノート: ブルー区分。規定に沿ったローカル利用が可能。判定根拠:リポジトリ内の全15個のpy/shスクリプトにおいてネットワーク通信機能は一切なし(requests、urllib、http(s):// エンドポイント、socket、curl、wget に対するスキャン一致件数は0件)。requirements.txt にも通信ライブラリは含まれない(requests はコメント内で「Web取得を追加する場合」の候補として言及されるのみ)。認証情報の読み込みも一切なし(os.environ、getenv、API_KEY、token、secret へのアクセスなし)。requirements に記載のある anthropic パッケージもコード内でimportされておらず(唯一の出現箇所は learner.md 内の擬似コードで、「現在の実装ではAI抽出は空リストを返し、実際のLLM API連携が必要」と明記)、外部APIキーとの連携はない。動作はすべてローカルで完結(elements.db / YAML / md の読み込み、elements.db および一部json/mdの書き出し、python3 / bash の実行)。グリーン区分ではない理由:ローカルPythonスクリプトを実行して直接SQLiteデータベースを改変すること、および element_db 内に _clear_all_data() のような初期化関数(import_from_json(clear_existing=True) から呼び出し可能)が含まれるため、単なる指示書ではなく「ローカルCLIツール/ローカル読み書き」に該当。イエロー/オレンジ区分ではない理由:外部送信先がなく、認証情報も扱わず、実行時に依存するサードパーティのリモートパッケージも存在しないため(pyyaml は標準的汎用ライブラリ、anthropic は未使用)。

5二重目の独立検証

  • [ok] 主入口判定(skill.path 该写哪一个) — .claude/skills/ 下确为 12 个 skill 目录(art-master / design-master / domain-classifier / intelligent-prompt-generator / product-master / prompt-analyzer / prompt-extractor / prompt-generator / prompt-master / prompt-xray / universal-learner / video-master)+ learner.md。定位依据两条:claude.md 项目架构段「**入口**:`.claude/skills/intelligent-prompt-generator/skill.md`」(实测文件名为大写 SKILL.md,属大小写笔误);路由指南把 portrait domain 与人像请求固定指向 intelligent-prompt-generator。另注 prompt-master 自己标注「⚠️ 旧架构」,故不选它作入口。本条目录已写入 skill.path。
  • [ok] .codex/skills 与 .claude/skills 是否内容相同 — diff -rq .claude/skills .codex/skills 无任何输出(完全一致);两侧各 35 文件、320,220 字节;md5 抽查 intelligent-prompt-generator/SKILL.md 均为 39dc6f78ad6b580eae2dbdedfcd64bfc、prompt-extractor/preprocessor.py 均为 c8d488bdb22a29334eb15b8025bce14d、SKILL_ROUTING_GUIDE.md 均为 d59be53db785d50d68f6962ab2bacb14。平台差异只在 claude.md vs codex.md:5 处(标题、入口路径 .claude→.codex、两处平台名、一处 「Claude Code 有多强」→「Codex Code 有多强」)。
  • [discrepancy] README/claude.md 宣传的 12 个 skill 是否都存在 — claude.md 与路由指南反复推荐设计类请求调用 `prompt-crafter`(⭐,20万+组合),但 .claude/skills 与 .codex/skills 下都没有 prompt-crafter 目录(grep 命中仅在 README.md/claude.md/codex.md/core/yaml_sampler.py/schema_migration_v1.sql/README_v2.0.md/UPGRADE_GUIDE_v2.0.md 的文本里)。其声称的能力实际由 core/yaml_sampler.py + core/design_bridge.py 实现,并挂在 intelligent-prompt-generator 的 Design 模式下。README 第 33 行另列了 `prompt-writer`,同样不存在,且该行自相矛盾地写「12个专业领域Skills」却列出 13 个名字。
  • [discrepancy] 文档引用的脚本/数据文件是否真实存在 — 实测 MISSING:prompt_tool.py(prompt-master/skill.md 的 20+ 条 python3 prompt_tool.py ... 命令全部指向它)、prompt_analyzer.py(prompt-analyzer/SKILL.md 的 from prompt_analyzer import analyze_prompt_detail)、learner.py、facial_features_library.json(prompt-master 的旧数据源)、module_library.json、extracted_modules.json(universal-learner 声明的输入)、universal_elements_library.json(element_db.export_library 的输出名)。.gitignore 显示这些被当作「临时开发脚本/大 JSON」排除,即用写作期本机文件而非仓库可交付资产。
  • [discrepancy] 元素数量声明三处互相矛盾 — README.md 声明 1246 且分领域明细(portrait 502/common 208/design 166/...)与 sqlite 实测 elements 表逐项吻合;但 claude.md 架构表写「1103元素,12领域」「intelligent-prompt-generator | portrait | 491」,路由指南同样写 491/51/59/77/49;而数据库 domains.total_elements 汇总只有 967(portrait 491/common 203/interior 79/product 77/design 59/art 51/video 49/prompt_writing 9),是早期快照未随 elements 表刷新。结论:README 的 1246 可信,claude.md 与路由指南的 491/1103 属过期数字。
  • [discrepancy] 「20万+ 组合」能否复算 — YAML 里可枚举的离散选项:37 个色值 × 每风格边框 (corner_radius 5 × box_shadow 3 × border 2 = 30) × 装饰 9 种 ≈ 9,990,量级差 20 倍。要把数字推到 20 万级需要把装饰的 count_range/rotation_range/size_range/opacity_range 这些连续区间按整数粒度展开计数(如星星 count 3-8 = 6 档 × rotation ±15 = 31 档 × size 16-32 = 17 档…),代码里并无这种展开逻辑(sample_variables 只是 random.choice 抽一组)。故「20万+」是营销口径的上界估计,非可复现统计。
  • [ok] 是否存在网络调用(含间接依赖) — 字符串扫描 requests/urllib/http://|https:///socket/curl/wget 在 15 个脚本中零命中;全部 import 清单实测为 os/json/sqlite3/re/yaml/sys/csv/random/time/re/Path/typing/collections/datetime 以及本项目内部模块(core.*、intelligent_generator、framework_loader)。requirements.txt 的 requests/pandas 被注释为可选,未安装也未使用。结论:零网络外发,security.network_calls 填空数组是准确而非漏查。
  • [ok] 是否存在凭证/环境变量读取 — os.environ/getenv/keychain 零命中;.env 仅出现在 .gitignore 的忽略规则里(仓库内无 .env 文件)。requirements 声明 anthropic>=0.7.0 但全仓 grep anthropic 只命中 requirements.txt 与两份 learner.md,且 learner.md 自述「当前实现中,AI辅助提取功能返回空列表,需要集成真实的LLM API」——即不上传任何 key,也不调用任何模型 API。

6結論

  • 検証可能で実在するアセットベース:12ドメイン、70カテゴリ、675件のコミュニティコーパス、5つの完全なデザインテンプレートにわたる1,246件の要素が、単一のSQLiteファイル(2.5MB)としてリポジトリに同梱。
  • 「生成」から「学習」まで完結する整ったエンジニアリング構成:統合3モードルーティング + フレームワーク駆動型選択 + 一貫性修正 + 生成履歴保存 + 学習器によるDBフィードバックの各工程に対応スクリプトとドキュメントが存在。
  • クリーンで自己完結したセキュリティ特性:完全ローカル実行、外部通信なし、認証情報不要、サブプロセス生成なし。DB書き込みはパラメータ化クエリ、YAML読み込みは safe_load を使用し、ユーザーのAPIキー等に一切触れない。
  • 高い移植性設計(デュアルプラットフォーム対応 + 単一ファイルデータソース):Claude Code および OpenAI Codex CLI の双方で同一内容をバイト単位で再利用可能。移行コストはエントリパスの書き換えのみ。
  • 最適な用途: AI画像・デザインプロンプト生成のためのローカル素材ライブラリと定型ワークフローを構築したいユーザーに最適:① 人物、ポスター、プロダクト、動画向けに構造化されたプロンプトテンプレートを求め、毎回ゼロから記述したくないクリエイター。②「スキルオーケストレーション + SQLite素材DB + Pythonエンジン + 学習ループ」というエンジニアリングパターンを学び、自身の領域に移植(elements.db やフレームワークYAMLを差し替え)したいスキル開発者。③ Claude Code や Codex CLI を利用し、エージェントがローカルでPythonを実行しSQLiteを読み書きするワークフローを受け入れられるユーザー。完成品ツールとしてよりもリファレンスアーキテクチャとしての利用に適している。
    不向きな用途: 以下には不向き:① 環境構築不要なプラグアンドプレイを求める場合(Python 3.8+、pip install pyyaml、SKILL.md 内の絶対パス修正、およびホストLLM環境が必要。スキル自体はAPIを呼び出さない)。② クラウドSaaS環境や複数人での共有を前提とするチーム(ネットワークI/Fや認証機能がなく、ローカル単一ファイル前提)。③ 生成結果の完全な即時実用性を求める場合(特定キャラクターや複雑なアクション、独自スタイルはホストモデルの補完に依存し、ライブラリは光影や撮影技術等の汎用パーツが中心のため、最終品質はモデルと選定に左右される)。④ 中国語コンテキストが全くないプロジェクト(トリガーワード、Intentキーワードテーブル、テンプレート名が主に中国語で構成)。⑤ 明確な商用ライセンス保証が必要な場合(リポジトリ内に正式な LICENSE ファイルが存在しない)。
    Install Agent-Ready
    ① Verified Mirror 2026-09-15
    Option A · Direct DownloadDownload image-prompt-generator.tar.gz
    sha256: c4376bb8c7682856…
    Option B · Copy Guide for Agent
    install.json
    Agent はこの JSON ガイドから自動的にダウンロードして検証します。
    ② Upstream GitHub
    GitHub Repo ↗
    Pinned to commit e951249840.