mcpField
V
validate-profile

validate-profile

github.com/indranilbanerjee营销与增长91378 次安装今天更新
代码仓库

关于 validate-profile

用于营销品牌配置的只读健康检查技能,供代理机构在开展活动或内容工作前验证资料完整性、合规项、连接器配置和输出目录。检查不会修改状态,也不会显示凭据值。

主要功能

  1. 01检查品牌身份与语调资料
  2. 02核对受众、合规和行业护栏
  3. 03检查连接器配置及 MCP 服务健康
  4. 04验证凭据存储与输出路径
  5. 05生成结构化报告和 JSON 摘要

适用场景

  1. 01品牌设置或导入指南后确认配置
  2. 02API 密钥轮换后检查连接器状态
  3. 03开展活动或客户工作前排查阻塞项

MCP 相关

可检查 .mcp.json 中 MCP 服务的 tools/list 响应,并以不输出密钥的方式核验连接器配置。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/indranilbanerjee/digital-marketing-pro --skill validate-profile

安装后在 Claude Code 中输入/validate-profile确认已加载。

详细介绍

/digital-marketing-pro:validate-profile — 品牌档案与凭据健康检查

脚本位置。 如果宿主未设置 ${CLAUDE_PLUGIN_ROOT},脚本位于此插件的 scripts/ 文件夹中,与 skills/ 同级。请使用 Python 3.10 或更高版本运行:使用 python;如果找不到 python,则使用 python3(macOS 和许多 Linux 系统)。

这项技能是判断“品牌是否已准备好开展工作”的权威关卡。它会验证品牌档案是否足够完整、可用于生产环境,并检查档案引用的每项凭据和连接器是否实际可访问,且绝不会打印凭据值。

在以下情况下使用此技能:

  • 执行 /digital-marketing-pro:brand-setup(或 /digital-marketing-pro:client-onboarding)后,确认新档案已准备好用于生产环境。
  • 轮换任何 API 密钥(Slack、HubSpot、Stripe、Ahrefs、GA4 服务账号等)后,重新确认连接正常,且不会在日志中暴露新密钥。
  • 导入品牌指南(/digital-marketing-pro:import-guidelines)后,确认合并成功。
  • 作为执行 /digital-marketing-pro:engagement、/digital-marketing-pro:campaign-plan 或 /digital-marketing-pro:launch-campaign 前的前置检查。

此技能的作用

对于运营 50–200 个客户品牌的代理机构,品牌档案和凭据总是在不断变化:初级员工更改了 Slack 频道、API 密钥轮换了,或品牌语调被编辑了。若在有问题的档案上开展 60 分钟的项目,可能会浪费数小时返工。此技能可在 60 秒内发现这些变化带来的问题。

此技能为只读,只检查状态,不会修改任何内容。它也绝不会打印凭据值:连接器检查只会输出通过、失败或错误类别,不会回显机密。

验证维度

维度检查内容严重程度
必需身份信息brand_name、industry 和市场/司法管辖区列表均非空 — 接受 target_markets(brand-setup 实际写入的字段)或 target_jurisdictions(旧字段)。只检查旧字段名会导致所有新创建的品牌在自己的验证中都触发 BLOCKERBLOCKER
品牌声音档案在 brand_voice(brand-setup 写入的字段,也是 content-engine 和 brand-voice-scorer.py 都读取的字段)或 voice(旧字段)下填入语气、正式程度和活力。生成器是此处的事实来源 — 两个使用方已经遵循它,因此这个验证器才是例外内容工作为 BLOCKER
受众档案target_audience.primary_persona 包含 role + reading_levelWARNING
护栏guardrails.prohibited_terms + guardrails.prohibited_claims 均非空。brand-setup 不会创建此区块,因此对于非受监管行业,应将其报告为 WARNING,并提供添加该区块的确切命令;对于受监管行业,则设为 BLOCKER — 在这些行业中,缺少护栏是真实风险,而非设置缺漏受监管行业(制药、BFSI、医疗保健、法律)为 BLOCKER;其他行业为 WARNING
合规司法管辖区每个已声明的司法管辖区在 skills/context-engine/compliance-rules.md 中都有对应的规则条目BLOCKER
连接器配置已就绪tracking.backend、integrations.*、analytics.* 中提及的每个连接器都已配置其环境变量/.mcp.json 条目(本地检查;实时可访问性由下方的 MCP/curl 探测检查)每个未配置的连接器均为 BLOCKER
MCP 服务运行状况.mcp.json 中的每个条目(如存在)都能响应 tools/list pingWARNING
凭据存储每个被引用的后端都已配置 ~/.claude-marketing/brands/{brand}/credentials.json(或环境变量)BLOCKER
输出路径可写~/.claude-marketing/brands/{brand}/ 可写;用户可见的发布目录($DIGITAL_MARKETING_PRO_PUBLISH_DIR 或 ~/Documents/DigitalMarketingPro/)可写BLOCKER
模型审校信息时效性scripts/resolve_model.py --registry-age 返回值 < 90 天WARNING

BLOCKER 表示“修复此问题之前,不允许用户运行 engagement / campaign-plan / launch-campaign。”WARNING 会提示用户,但不会阻止操作。

流程

步骤 0 — 确定要验证的品牌

如果传入了 --brand <slug>,则使用该品牌。否则,从 ~/.claude-marketing/brands/_active-brand.json 读取当前启用的品牌(由 /digital-marketing-pro:switch-brand 设置)。如果两者都不可用,则报错:"--brand <slug> required, or run /digital-marketing-pro:switch-brand first." 不要验证“所有”品牌 — 按设计,验证是针对单个品牌的。

步骤 1 — 加载品牌档案
BRAND_DIR="$HOME/.claude-marketing/brands/{brand}"
test -d "$BRAND_DIR" || { echo "Brand directory not found at $BRAND_DIR — run /digital-marketing-pro:brand-setup first."; exit 1; }
PROFILE="$BRAND_DIR/profile.json"
test -f "$PROFILE" || { echo "profile.json missing under $BRAND_DIR — run /digital-marketing-pro:brand-setup."; exit 1; }

解析档案 JSON 并提取:brand_name、industry、target_jurisdictions、voice.*、target_audience.*、guardrails.*、tracking.backend、integrations.*、analytics.*。

步骤 2 — 必填字段检查

按上方 验证维度 表中的清单逐项检查。为每个字段记录以下其中一项:OK / WARN: <reason> / BLOCK: <reason>。不要提前终止 — 收集所有问题,让用户一次查看完整情况。

对于受监管行业(industry 匹配 pharma、pharmaceuticals、bfsi、banking、insurance、healthcare、legal、medical-devices 中的任意一项),将护栏问题从 WARNING 升级为 BLOCKER。

步骤 3 — 合规司法管辖区交叉检查

对于 target_jurisdictions 中的每个条目,确认 skills/context-engine/compliance-rules.md 包含匹配的章节标题(例如 ### 1.11 India — DPDPA)。如果声明了某个司法管辖区但规则中未涵盖,则标记为 BLOCK,并附上以下内容:"Jurisdiction {X} declared in profile but no compliance rules for it — engagement will produce non-compliant deliverables."

步骤 4 — 连接器可达性(凭据安全)

对于 tracking.backend、integrations.crm、integrations.email、integrations.cms、integrations.analytics、integrations.social 中引用的每个后端,使用 scripts/connector-status.py 运行匹配的健康探测:

python "${CLAUDE_PLUGIN_ROOT}/scripts/connector-status.py" \
    --action status \
    --brand "{brand}" \
    --connectors "{comma-separated list inferred from profile}" \
    --probe-only --no-secrets

connector-status.py --probe-only 会运行本地就绪检查:验证每个连接器所需的环境变量 / .mcp.json 条目是否存在且非空。它不会建立实时网络连接,也不会调用 whoami,因此报告的是配置级状态(CONFIGURED / MISSING_ENV / NOT_IN_MCP),而非实时 HTTP 状态。--no-secrets 可确保它绝不会回显、记录或写入凭据值。如需实际存活性检查,请使用连接器的 MCP tools/list 端点,或使用下方的 HTTP curl 探测。

对于 .mcp.json 中的 MCP 服务(如果品牌级或项目级配置中存在),如果连接器已加载,则通过 mcp__connector__* 对每个服务执行 tools/list ping;对于 HTTP MCP 服务,则对已配置的 url 执行 5 秒 curl HEAD 请求:

for url in $(jq -r '.mcpServers[] | select(.type=="http") | .url' .mcp.json); do
    code=$(curl -sS -o /dev/null -w "%{http_code}" -m 5 "$url" || echo "000")
    echo "$url -> HTTP $code"
done

HTTP 200、204(GET 需要身份验证,POST 可用)和 405(GET 不允许此方法,POST 可用)都算作“可达”。404、000(DNS / 超时)和 5xx 均视为阻断。

步骤 5 — 输出路径可写性
test -w "$HOME/.claude-marketing/brands/{brand}/" || echo "BLOCK: brand directory is not writeable"
# User-visible publish dir (dual-copy pattern)
if [ -n "$DIGITAL_MARKETING_PRO_PUBLISH_DIR" ]; then
    test -w "$DIGITAL_MARKETING_PRO_PUBLISH_DIR" || echo "WARN: DIGITAL_MARKETING_PRO_PUBLISH_DIR ($DIGITAL_MARKETING_PRO_PUBLISH_DIR) is not writeable"
elif [ -d "$HOME/Documents" ]; then
    test -w "$HOME/Documents" || echo "WARN: ~/Documents is not writeable — the user-visible publish copy will fail"
fi
步骤 6 — 模型策展器时效性
python "${CLAUDE_PLUGIN_ROOT}/scripts/resolve_model.py" --registry-age

如果注册表的更新时间超过 90 天,则发出警告:“model_registry.json is {N} days old — frontier models change every ~6 weeks. Run scripts/refresh_models.py to check drift.”(不要阻断——策展器会自动回退到非弃用 ID,因此注册表较旧只会降低性能,不会导致故障。)

步骤 7 — 报告

打印结构化报告。始终显示每项检查(不要只打印失败项——代理机构需要确认其余项目正常):

🔎 Brand profile validation — {brand_name}
   Slug: {brand} · Industry: {industry} · Jurisdictions: {list}

✅ Required identity      brand_name, industry, target_jurisdictions all set
✅ Voice profile          tone={tone} · formality={formality} · energy={energy}
⚠️  Audience profile       primary_persona.role set, reading_level MISSING
✅ Guardrails             {N} prohibited_terms, {M} prohibited_claims (industry={industry})
✅ Compliance jurisdictions  EU-GDPR ✓ · IN-DPDPA ✓ · US-CCPA ✓
🛑 Connector — Slack       MISSING_ENV (SLACK_* env not set — add via /digital-marketing-pro:add-integration slack)
✅ Connector — HubSpot     OK (workspace acme-corp, 1247 contacts)
✅ Connector — Stripe      OK
✅ MCP — gmailmcp.googleapis.com  HTTP 405 (alive)
✅ Output paths            ~/.claude-marketing/brands/{brand}/ writeable; ~/Documents/DigitalMarketingPro/ writeable
⚠️  Model curator           registry is 102 days old — consider scripts/refresh_models.py

Decision: 🛑 BLOCKED — Slack connector not configured. Fix before running:
  • /digital-marketing-pro:engagement
  • /digital-marketing-pro:campaign-plan
  • /digital-marketing-pro:launch-campaign

Re-run /digital-marketing-pro:validate-profile after fixing.

另请输出机器可读的 JSON 摘要,以便 /digital-marketing-pro:check、/digital-marketing-pro:status 或下游自动化使用:

{
  "brand": "{slug}",
  "decision": "blocked | passed | passed_with_warnings",
  "blockers": [{"check": "connector_slack", "reason": "..."}],
  "warnings": [{"check": "audience_persona", "reason": "reading_level missing"}],
  "passed": ["required_identity", "voice_profile", ...]
}

行为规则

  1. 绝不打印凭据值。 连接器探测使用 --no-secrets;如果探测意外在错误字符串中返回凭据,打印前必须将其删去。技能输出会进入日志和剪贴板——应假设它会泄露。
  2. 只读。 绝不修改品牌资料、凭据、MCP 配置或任何持久状态。这是检查器,不是修复器。应提供可执行的后续命令。
  3. 不要提前结束。 即使遇到首个阻断项,也要运行所有检查——代理机构希望一次性获得完整的问题清单。
  4. 不要跨品牌验证。 按设计仅验证单个品牌。遍历所有品牌属于单独的工作流(/digital-marketing-pro:agency-dashboard --health)。
  5. 保持幂等。 连续运行此技能两次,输出应保持一致(时间戳除外)。技能内部不进行重试——是否重试由用户决定。

参数

/digital-marketing-pro:validate-profile [--brand <slug>] [--json] [--connectors <list>] [--quick]
  • --brand <slug> — 要验证的品牌(否则使用当前激活的品牌)
  • --json — 仅输出 JSON 摘要,不生成面向用户的报告(适用于串联调用)
  • --connectors <list> — 以逗号分隔的连接器子集,替代配置文件中的全部连接器进行探测(仅 Slack 轮换时很有用)
  • --quick — 跳过连接器可达性探测(仅运行字段级检查)

相关技能与命令

  • brand-setup — 交互式创建品牌
  • import-guidelines — 将现有品牌指南批量加载到资料中
  • status — 当前激活品牌的统一只读快照
  • check — 发布前的内容质量检查
  • switch-brand — 设置当前激活的品牌
  • scripts/connector-status.py — 底层连接器健康探测
  • scripts/resolve_model.py — 模型策展器(用于检查时效性)

评论

支持 Markdown