Token导航 LogoToken导航

Agent Skill · 研究检索

agency-docs-updater(机构文档更新程序)

用于辅助文档、README、Markdown、说明文和内容稿件的整理与改写。它适合让 Agent 提炼结构、补齐章节、统一术语、检查链接或把零散材料整理成可读文档。使用时应保留项目已有事实、命令和路径,不要把未确认的信息写成确定结论;涉及对外文案时,还需要控制语气,避免过度营销或夸大能力。

agency-docs-updater 是研究检索类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为操作浏览器;许可证信息还不明确,第三方扫描有提醒项,按安装量在研究检索类的 73,675 个 Skill 里排第 41,306。

总安装 1,187周安装 51GitHub Stars 141下载 416核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
unknown

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:agency-docs-updater(机构文档更新程序)
来源仓库:https://github.com/glebis/claude-skills
仓库路径:skills/agency-docs-updater
安装命令:
npx skills add https://github.com/glebis/claude-skills --skill agency-docs-updater
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/glebis/claude-skills --skill agency-docs-updater

这个 Skill 是做什么的

研究检索类 Skill 主要解决「找资料、核对事实、把来源整理清楚」的问题,通常会让助手先检索再总结。

用于辅助文档、README 和内容稿件的整理与结构化改写。适合在 Codex、Claude、Cursor、Gemini CLI 中提炼结构、统一术语或检查链接。自动执行从日历同步到转录提取的完整文档流水线,生成可读性强的说明材料。使用时应保留项目已有事实,避免将未确认信息写成确定结论。

agency-docs-updater 属于研究检索类 Skill,可作为该场景下的辅助能力补充。

来源仓库内路径:skills/agency-docs-updater

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/glebis/claude-skills --skill agency-docs-updat…;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要操作浏览器,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

agency-docs-updater 怎么安装?

在终端执行 npx skills add https://github.com/glebis/claude-skills --skill agency-docs-updater。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

agency-docs-updater 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

agency-docs-updater 需要什么权限?

权限级别是操作浏览器。该 Skill 可能涉及浏览器控制能力,使用时可能读取或操作网页内容,需要在受控环境中确认权限边界。

agency-docs-updater 是免费的吗?

公开资料没有标注明确许可证,收费和商用限制都无法确认。正式使用前请到来源仓库核对授权说明。

agency-docs-updater 用的人多吗?

公开数据是累计安装 1,187 次,近一周安装 51 次,下载 416 次,GitHub 141 星。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

agency-docs-updater 安全吗?

第三方扫描有提醒项,说明存在需要人工确认的行为。安装前请打开源码看清它读了什么、联网到哪里。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。

先想清楚的地方

  • 许可证没有明确标注,能不能商用、能不能再分发都不确定。
  • 第三方扫描存在提醒项或未通过项,需要人工逐条确认。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理研究检索类任务、又不想每次都手写提示词的人。

不太适合

  • 需要明确授权才能用到公司项目里的场景。
  • 需要厂商级技术支持和 SLA 的生产系统。

研究检索类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
find-skills

寻找技能 · Codex、Claude

31,199,81316,486操作浏览器MIT有提醒
self-improving-agent

自我改进 Agent · OpenClaw

16,464,0023,396接触敏感数据MIT-0通过
soultrace

灵魂追踪 · Codex、Claude

7,588,94412需要联网未明确有提醒
self-improving

自我完善 · OpenClaw

6,829,2841,046需要联网MIT-0通过
microsoft-foundry

微软代工厂 · Codex、Claude

6,614,144764调用外部服务未明确有提醒
agency-docs-updater

机构文档更新程序 · 本页

1,187141操作浏览器未明确有提醒

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

Agency Docs Updater — End-to-End Pipeline

When this skill is invoked, execute ALL steps below automatically in sequence. Do not stop to ask for confirmation between steps — run the full pipeline. Only pause if a step fails and cannot be recovered.

Step 1: Find Fathom Transcript

DATE=$(date +%Y%m%d)

Look for ~/Brains/brain/${DATE}-claude-code-lab-02.md. If it exists, read it and extract share_url and fathom_id from its YAML frontmatter.

If the file does NOT exist:

  1. Run ~/.claude/skills/calendar-sync/sync.sh to sync today's calendar
  2. Re-check for the file
  3. If still missing, stop and report the issue

Store these variables for later steps:

  • FATHOM_FILE = full path to transcript (e.g. ~/Brains/brain/20260207-claude-code-lab-02.md)
  • SHARE_URL = the share_url from frontmatter
  • MEETING_TITLE = the title from frontmatter (e.g. "Claude Code Lab 03 — Meeting 01: Знакомство и введение")
  • DATE = YYYYMMDD string
  • VIDEO_NAME = ${DATE}-claude-code-lab-02
  • LAB_NUMBER = lab number from filename (e.g. 03)
  • MEETING_NUMBER = meeting number from title or determined in Step 5 (e.g. 01)

Step 2: Download Video from Fathom

First check if ~/Brains/brain/${VIDEO_NAME}.mp4 already exists and is > 1MB. If so, skip this step.

Otherwise:

cd ~/Brains/brain && python3 ~/.claude/skills/fathom/scripts/download_video.py \
  "${SHARE_URL}" --output-name "${VIDEO_NAME}"

After download, verify the mp4 exists and is > 1MB:

ls -la ~/Brains/brain/${VIDEO_NAME}.mp4

If download fails, stop and report. This is a long-running operation (may take several minutes for a 2h video).

Step 3: Upload to YouTube via videopublish

Prerequisites check (run before first invocation):

cd ~/ai_projects/youtube-uploader && node -e "require('playwright')" 2>/dev/null || (npm install playwright && npx playwright install chromium)
cd ~/ai_projects/youtube-uploader && \
python3 process_video.py \
  --video ~/Brains/brain/${VIDEO_NAME}.mp4 \
  --fathom-transcript ${FATHOM_FILE} \
  --title "${MEETING_TITLE}" \
  --upload

Key notes:

  • Always pass --title with the title from the Fathom transcript frontmatter. Without it, the LLM generates a generic/wrong title (e.g. "Клод Код Лаб" instead of the proper meeting name)
  • Do NOT use source venv/bin/activate — youtube-uploader has no venv, run python3 directly
  • --fathom-transcript makes it skip video transcription (uses Fathom transcript instead)
  • --upload triggers YouTube + Yandex.Disk upload
  • Handles: metadata generation, thumbnail creation, YouTube upload, Yandex upload
  • Thumbnail generation requires playwright npm package and Chromium browser

Extract YouTube URL from stdout — look for the line:

✓ YouTube video: https://www.youtube.com/watch?v=VIDEO_ID

If not found in stdout, check the metadata JSON:

cat ~/ai_projects/youtube-uploader/processed/metadata/${VIDEO_NAME}.json

Store YOUTUBE_URL for the next steps.

This step is long-running (10-30 minutes depending on upload speed). Run in background with run_in_background: true.

If the upload fails or stalls mid-way, resume from the upload step only (skips metadata/thumbnail regeneration):

python3 process_video.py --video ~/Brains/brain/${VIDEO_NAME}.mp4 \
  --fathom-transcript ${FATHOM_FILE} --title "${MEETING_TITLE}" --upload --resume-from upload

Parallelization: Start Step 4 (summary generation) while Step 3 upload runs in background. The summary does not depend on the YouTube URL.

Step 4: Generate Fact-Checked Russian Summary

Read the full Fathom transcript from ${FATHOM_FILE}.

Generate a comprehensive Russian-language summary of the meeting with these requirements:

  • Structured with ## section headers
  • Bullet points for key concepts
  • Code examples where relevant (keep code/paths in English)
  • All technical terms in English (MCP, Skills, Claude Code, YOLO, vibe coding, etc.)
  • Comprehensive enough to serve as meeting notes
  • Exclude personal scheduling details (e.g. "X will be on vacation next week") — only include content relevant to the meeting topic itself

Then use the Task tool with claude-code-guide subagent to fact-check all Claude Code feature claims in the summary:

Launch claude-code-guide agent to fact-check this summary about Claude Code features.

Verify:
- Subagent types and their capabilities
- Tool names and parameters
- Feature availability and limitations
- Best practices mentioned

Correct any inaccuracies.

After fact-checking, save the corrected summary to the scratchpad directory as summary.md.

Step 4b: Update YouTube Video Description

Do this after both Step 3 (upload) and Step 4 (summary) are complete.

The description generated by process_video.py's built-in LLM (Groq) is generic and low-quality for Russian content. Instead, generate the YouTube description yourself using the summary from Step 4.

Determine the meeting page URL: https://agency-lab.glebkalinin.com/docs/claude-code-internal-XX/meetings/NN (where XX = lab number, NN = meeting number).

Generate a YouTube description in this format:

${MEETING_TITLE}

[1-2 sentence overview of the meeting in Russian]

В этом видео:
- [bullet point 1 — key topic covered]
- [bullet point 2]
- ...
- [bullet point 8-10 max]

Материалы и конспект занятия:
https://agency-lab.glebkalinin.com/docs/claude-code-internal-XX/meetings/NN

Сообщество AGENCY — практики AI-агентов:
https://agency-lab.glebkalinin.com

#ClaudeCode #AI #Anthropic #Claude #AIагенты #программирование

Then update the video on YouTube using the API via auth.py (which manages token.pickle with youtube.force-ssl scope):

cd ~/ai_projects/youtube-uploader && PYTHONPATH=. python3 -c "
from auth import get_authenticated_service
youtube = get_authenticated_service()
resp = youtube.videos().list(part='snippet', id='VIDEO_ID').execute()
snippet = resp['items'][0]['snippet']
snippet['title'] = MEETING_TITLE
snippet['description'] = DESCRIPTION
snippet['tags'] = ['Claude Code', 'Claude', 'Anthropic', 'AI', 'AI агенты', 'программирование', 'Claude Code Lab', 'MCP']
youtube.videos().update(part='snippet', body={'id': 'VIDEO_ID', 'snippet': snippet}).execute()
"

Key notes:

  • auth.py uses youtube.force-ssl scope which covers both uploads and metadata updates
  • token.pickle persists across sessions — no browser auth needed after initial setup
  • If token expires, auth.py auto-refreshes it
  • Extract VIDEO_ID from YOUTUBE_URL
  • Generate the bullet points from the summary content, not from the transcript directly

Add video to playlist — after updating metadata, add the video to the lab's playlist:

cd ~/ai_projects/youtube-uploader && PYTHONPATH=. python3 -c "
from auth import get_authenticated_service
youtube = get_authenticated_service()

# Find playlist matching 'Claude Code Lab XX'
resp = youtube.playlists().list(part='snippet', mine=True, maxResults=50).execute()
playlist_id = None
for p in resp['items']:
    if p['snippet']['title'] == 'Claude Code Lab LAB_NUMBER':
        playlist_id = p['id']
        break

if playlist_id:
    youtube.playlistItems().insert(part='snippet', body={
        'snippet': {
            'playlistId': playlist_id,
            'resourceId': {'kind': 'youtube#video', 'videoId': 'VIDEO_ID'}
        }
    }).execute()
    print(f'Added to playlist: {playlist_id}')
else:
    print('Playlist not found — create it manually on YouTube first')
"

Known playlist IDs (for reference):

  • Claude Code Lab 03: PLZNP0SKU2Sqic4njcSQemmyrVLHZ4C_iT
  • Claude Code Lab 02: PLZNP0SKU2SqizoM9_7jMjgae2cvjGN9bQ
  • Claude Code Lab: PLZNP0SKU2Sqga_EjxAW_OxnqaUk1ZGfXU

Replace LAB_NUMBER with the two-digit lab number (e.g. 03). The playlist name must match exactly (e.g. "Claude Code Lab 03").

Step 5: Run update_meeting_doc.py

python3 ~/.claude/skills/agency-docs-updater/scripts/update_meeting_doc.py \
  ${FATHOM_FILE} \
  "${YOUTUBE_URL}" \
  ${SCRATCHPAD}/summary.md

The script auto-detects:

  • Lab number from filename (claude-code-lab-XX -> XX)
  • Target docs dir: ~/Sites/agency-docs/content/docs/claude-code-internal-XX/
  • Next meeting number from existing files in meetings/
  • Presentation files from ~/ai_projects/claude-code-lab/presentations/lab-XX/
  • Summary language (auto-translates to Russian if needed)

IMPORTANT: Meeting number detection — The script picks the next available number, but placeholder MDX files may already exist for future meetings with dates pre-filled. Before using the script's auto-detected number:

  1. List existing MDX files in meetings/
  2. Check if any placeholder file already has today's date in its content (e.g. grep -l "14 февраля" meetings/*.mdx)
  3. If a placeholder exists for today's date, use --update flag or -n NN to target that file instead of creating a new one

Output: MDX file at ~/Sites/agency-docs/content/docs/claude-code-internal-XX/meetings/NN.mdx

After the script runs, post-process the generated MDX:

  1. Strip appended presentation content: The script appends Marp presentation markdown from presentations/lab-XX/ which contains HTML comments (<!-- _class: lead -->) that break MDX compilation. Remove everything after the summary section (after the last --- separator following the summary). The MDX should only contain: frontmatter, video section, and summary.
  2. Copy lesson HTML to public: If ~/ai_projects/claude-code-lab/lesson-generator/${DATE}.html exists, copy it to ~/Sites/agency-docs/public/${DATE}-claude-code-lab-XX.html (where XX is the lab number). Then add a link in the MDX video section: **Материалы:** [Презентация занятия](/${DATE}-claude-code-lab-XX.html)
  3. Replace frontmatter placeholders:

- [Название встречи] -> actual meeting title derived from transcript content - [Краткое описание встречи] -> brief description - [Дата встречи] -> formatted date from the transcript

  1. Verify build locally before committing: cd ~/Sites/agency-docs && npm run build 2>&1 | tail -5 If build fails, fix the MDX (common issues: HTML comments, unescaped < or { characters) and retry.

Step 6: Commit and Push

cd ~/Sites/agency-docs && git add . && git commit -m "Add meeting NN" && git push

Replace NN with the actual meeting number from Step 5 output.

This triggers Vercel deployment automatically.

Step 7: Verify Vercel Deployment

Wait ~90 seconds after push, then check deployment status:

gh api repos/glebis/agency-docs/commits/COMMIT_HASH/status --jq '{state, total_count}'
gh api repos/glebis/agency-docs/commits/COMMIT_HASH/statuses --jq '.[0] | {state, description}'
  • If state: success — deployment is live.
  • If state: failure — check the build error locally with cd ~/Sites/agency-docs && npm run build 2>&1 | tail -20, fix, and re-push.
  • If state: pending — wait another 60 seconds and re-check.

Pipeline Summary

After completion, report:

  1. Fathom transcript path
  2. Downloaded video path
  3. YouTube URL
  4. Generated MDX path
  5. Git commit hash
  6. Vercel deployment status (success/failure)

Error Recovery

  • Step 1 fail (no transcript): Run calendar-sync, retry once. If still missing, stop.
  • Step 2 fail (download): Check if share_url is valid. Report ffmpeg errors.
  • Step 3 fail (upload): Check YouTube OAuth tokens, Playwright installation. Report specific error. Do NOT try source venv/bin/activate.
  • Step 4 fail (summary): Proceed with English summary if Russian generation fails.
  • Step 5 fail (MDX): Check that fathom_url exists in frontmatter. Check docs_dir exists.
  • Step 6 fail (git): Report conflict details. Do not force-push.

Reference: CLI Interfaces

download_video.py

python3 download_video.py <share_url> --output-name <name_without_ext>

Downloads to current directory as <name>.mp4.

process_video.py

python3 process_video.py --video <path> --fathom-transcript <path> --upload

Flags: --upload (YouTube+Yandex), --yandex-only, --skip-thumbnail, --language <code>, --title <override>.

update_meeting_doc.py

python3 update_meeting_doc.py <fathom_file> <youtube_url> <summary_file> [-n NN] [-l ru|en|auto] [--update]

Learnings

2026-02-07

Context: First full pipeline run for meeting 08

What Worked:

  • --resume-from upload avoids re-generating metadata/thumbnails on upload retry
  • Parallelizing summary (Step 4) with YouTube upload (Step 3) saves 10+ minutes
  • gh api repos/OWNER/REPO/commits/HASH/status reliably checks Vercel deploy status
  • Local npm run build catches MDX errors before pushing

What Failed:

  • YouTube upload speed degraded from 5.4 MB/s to 0.15 MB/s mid-upload (3 attempts needed)
  • update_meeting_doc.py appended lab-01 Marp presentation with <!-- --> comments — broke MDX build
  • Pushed without local build check — caused Vercel deploy failure, required fix commit

Known Issues:

  • presentations/lab-XX/ may contain presentations from wrong meetings — always strip appended content
  • YouTube API upload speed is highly variable and not controllable from client side
  • MDX does not support HTML comments (<!-- -->), unescaped <, or bare { characters

2026-02-14

Context: Pipeline run for meeting 10 (Agent SDK workshop)

What Worked:

  • Parallelizing summary with YouTube upload continues to save significant time
  • Date-matching existing placeholder MDX files correctly identifies target meeting number
  • Local npm run build caught issues before push

What Failed:

  1. venv activation — source venv/bin/activate fails because youtube-uploader has no venv. Fixed: run python3 directly
  2. Playwright missing — ERR_MODULE_NOT_FOUND: Cannot find package 'playwright' during thumbnail generation. Fixed: added prerequisite check in Step 3
  3. Wrong meeting number — update_meeting_doc.py auto-detected meeting 13 (next available), but meeting 10 was a placeholder for today's date. Fixed: added date-matching guidance in Step 5
  4. Personal scheduling details in summary — "X will be on vacation" included in published summary. Fixed: added exclusion rule in Step 4
  5. Appended Marp content — still happens despite being documented. Reinforced in Step 5 post-processing

Key Fix: Always check existing MDX files by date content before trusting auto-detected meeting number. Use -n NN flag to override.

2026-03-04

Context: Pipeline run for Lab 03, Meeting 01

What Worked:

  • Full pipeline completed successfully (transcript, download, upload, summary, MDX, deploy)
  • Fathom recorded as "Impromptu Zoom Meeting" — found by date, renamed correctly

What Failed:

  1. Wrong YouTube title — Without --title flag, LLM generated "Клод Код Лаб" instead of proper meeting name. Fixed: added --title "${MEETING_TITLE}" to Step 3 using frontmatter title
  2. YouTube OAuth scope too narrow — youtube.upload scope can't update video metadata (title/description) after upload. Needed youtube.force-ssl scope for videos().update() call
  3. Appended Marp content — Still happens (3rd time). Truncation via Edit tool only replaced first match, leaving 1100+ lines of Marp. Fixed: rewrote entire file with Write tool

Key Fix: Always pass --title from Fathom frontmatter title field to process_video.py. The LLM metadata generator produces poor/generic titles for Russian-language content.

平台分布

Codex

37.55%
按下载量换算156

Claude

28.17%
按下载量换算117

Cursor

18.32%
按下载量换算76

Gemini CLI

9.81%
按下载量换算41

安全审计

Gen Agent Trust Hub

可疑

Socket

通过

Snyk

可疑

权限和风险

操作浏览器

该 Skill 可能涉及浏览器控制能力,使用时可能读取或操作网页内容,需要在受控环境中确认权限边界。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在提醒或未通过项,安装前请自行复核。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills