diff --git a/tools/manifest.json b/tools/manifest.json index 578752e..1a7fb1b 100644 --- a/tools/manifest.json +++ b/tools/manifest.json @@ -1,6 +1,6 @@ { "version": 1, - "updated_at": "2026-04-17T21:15:35.374512+00:00", + "updated_at": "2026-04-21T02:20:52.555195+00:00", "files": { "raw/Cloud & DevOps/DevOps Culture and Transformation Fostering Collaboration, Agile Practices, and Innovation LinkedIn.md": { "hash": "98d028ad9e184a6f", @@ -51,12 +51,12 @@ "ingested_at": "2026-04-16T06:20:57.379790+00:00" }, "raw/Cloud & DevOps/DevOps Maturity Model From Traditional IT to Advanced DevOps.md": { - "hash": "6914f8945e00022e", - "modified": "2026-04-14T04:28:42.626393+00:00", + "hash": "289ab51b018f4a45", + "modified": "2026-04-19T10:52:41.091760", "slug": "DevOps-Maturity-Model-From-Traditional-IT-to-Advanced-DevOps", "source_path": "wiki/sources/DevOps-Maturity-Model-From-Traditional-IT-to-Advanced-DevOps.md", "ingested": true, - "ingested_at": "2026-04-16T06:20:57.379846+00:00" + "ingested_at": "2026-04-19T07:17:49.771383" }, "raw/Cloud & DevOps/How Agentic AI can help for Cloud DevOps.md": { "hash": "a162132fee73fe08", @@ -67,12 +67,12 @@ "ingested_at": "2026-04-16T06:20:57.379887+00:00" }, "raw/Cloud & DevOps/Public vs Private vs Hybrid Cloud Differences Explained.md": { - "hash": "868351fa9207d5f7", - "modified": "2026-04-14T04:28:42.627597+00:00", - "slug": "Public-vs-Private-vs-Hybrid-Cloud-Differences-Explained", + "hash": "c6ede072a779194e", + "modified": "2026-04-19T07:17:49.627597+00:00", + "slug": "public-vs-private-vs-hybrid-cloud-differences-explained", "source_path": "wiki/sources/Public-vs-Private-vs-Hybrid-Cloud-Differences-Explained.md", "ingested": true, - "ingested_at": "2026-04-16T06:20:57.379932+00:00" + "ingested_at": "2026-04-19T07:17:49.771394" }, "raw/Cloud & DevOps/These 6 Linux apps let you monitor system resources in style.md": { "hash": "a31075218ca6624e", @@ -83,44 +83,44 @@ "ingested_at": "2026-04-16T06:20:57+00:00" }, "raw/Cloud & DevOps/RTO vs RPO Key Differences for Modern Disaster Recovery.md": { - "hash": "54e2ec8ad0a3202d", + "hash": "eb9f9fab7e2875bd", "modified": "2026-04-14T04:28:42.627898+00:00", - "slug": "rto-vs-rpo-key-differences-for-modern-disaster-recovery", - "source_path": "wiki/sources/rto-vs-rpo-key-differences-for-modern-disaster-recovery.md", + "slug": "RTO-vs-RPO-Key-Differences-for-Modern-Disaster-Recovery", + "source_path": "wiki/sources/RTO-vs-RPO-Key-Differences-for-Modern-Disaster-Recovery.md", "ingested": true, - "ingested_at": "2026-04-16T06:35:00+00:00" + "ingested_at": "2026-04-19T21:50:59.157646" }, "raw/Cloud & DevOps/How to Simplify Multi-Account Deployments Monitoring Centralized Logs for AWS CloudFormation StackSets.md": { - "hash": "6719289e55a83ef8", - "modified": "2026-04-14T04:28:42.627379+00:00", - "slug": "how-to-simplify-multi-account-deployments-monitoring", - "source_path": "wiki/sources/how-to-simplify-multi-account-deployments-monitoring.md", + "hash": "645ae40df1929090", + "modified": "2026-04-17T00:38:12.000000+00:00", + "slug": "how-to-simplify-multi-account-deployments-monitoring-centralized-logs-for-aws-cloudformation-stacksets", + "source_path": "wiki/sources/how-to-simplify-multi-account-deployments-monitoring-centralized-logs-for-aws-cloudformation-stacksets.md", "ingested": true, - "ingested_at": "2026-04-16T08:46:30.130439+00:00" + "ingested_at": "2026-04-19T17:00:00.000000" }, "raw/Cloud & DevOps/Understanding Complete ITSM.md": { - "hash": "71ce0a0425bf6c22", + "hash": "facc8888fc483b7d", "modified": "2026-04-14T04:28:42.630861+00:00", "slug": "modern-itsm-driving-efficiency-security-resilience", "source_path": "wiki/sources/modern-itsm-driving-efficiency-security-resilience.md", "ingested": true, - "ingested_at": "2026-04-16T08:46:30.130604+00:00" + "ingested_at": "2026-04-19T07:27:03.812858" }, "raw/Cloud & DevOps/What is DevSecOps Best Practices, Benefits, and Tools.md": { - "hash": "f4257c49bc1ec641", + "hash": "7fd7dfa7c2f41e4f", "modified": "2026-04-14T04:28:42.631251+00:00", "slug": "what-is-devsecops-best-practices-benefits-and-tools", "source_path": "wiki/sources/what-is-devsecops-best-practices-benefits-and-tools.md", "ingested": true, - "ingested_at": "2026-04-16T09:07:53.809640+00:00" + "ingested_at": "2026-04-19T07:31:45.180984" }, "raw/Cloud & DevOps/Cloud Operating Model Key Strategies and Best Practices.md": { - "hash": "a58d5e980eeaf214", - "modified": "2026-04-14T04:28:42.625875+00:00", - "slug": "Cloud-Operating-Model-Key-Strategies-and-Best-Practices", + "hash": "2c8870c32cfff179", + "modified": "2026-04-20T00:00:00.000000+00:00", + "slug": "cloud-operating-model-key-strategies-and-best-practices", "source_path": "wiki/sources/Cloud-Operating-Model-Key-Strategies-and-Best-Practices.md", "ingested": true, - "ingested_at": "2026-04-16T08:00:00+00:00" + "ingested_at": "2026-04-20T00:00:00.000000" }, "raw/Home Office/用Docker中安装Navidrome.md": { "hash": "7e044ac150fdd317", @@ -429,12 +429,12 @@ "ingested_at": "2026-04-17T04:04:30.150847" }, "raw/Home Office/如何传输Docker images 并且在另一个Docker安装.md": { - "hash": "17413f4eb1d92fa2", - "modified": "2026-04-14T04:28:42.636228+00:00", + "hash": "e52c4cc86983d03b", + "modified": "2026-04-17T00:38:12.844159+00:00", "slug": "docker-images-transfer-guide", "source_path": "wiki/sources/docker-images-transfer-guide.md", - "ingested": true, - "ingested_at": "2026-04-17T04:18:38.125345" + "ingested": false, + "ingested_at": null }, "raw/Vibe Coding/如何在Ubuntu上安装opencode并配置Vibe-Kanban.md": { "hash": "0d9c60e956a2d9be", @@ -685,12 +685,12 @@ "ingested_at": "2026-04-17T12:49:13.543366" }, "raw/Agent/usecases/project-state-management.md": { - "hash": "457ad7270972abd5", - "modified": "2026-04-09T11:31:39.260750+00:00", + "hash": "328c1da4de81240b", + "modified": "2026-04-17T00:38:12.842491+00:00", "slug": "project-state-management", "source_path": "wiki/sources/project-state-management.md", - "ingested": true, - "ingested_at": "2026-04-17T13:04:09.306266" + "ingested": false, + "ingested_at": null }, "raw/Agent/usecases/multi-agent-team.md": { "hash": "9b7920c47713e7e8", @@ -789,12 +789,12 @@ "ingested_at": "2026-04-17T17:08:13.993461" }, "raw/Agent/usecases/todoist-task-manager.md": { - "hash": "b8b3da6f92b98236", - "modified": "2026-04-09T11:31:39.263357+00:00", + "hash": "779b20312c97d5aa", + "modified": "2026-04-17T00:38:12.842634+00:00", "slug": "todoist-task-manager-agent-task-visibility", "source_path": "wiki/sources/todoist-task-manager-agent-task-visibility.md", - "ingested": true, - "ingested_at": "2026-04-17T17:23:47.983600" + "ingested": false, + "ingested_at": null }, "raw/Agent/usecases/habit-tracker-accountability-coach.md": { "hash": "7d99642a8c38884a", @@ -853,12 +853,12 @@ "ingested_at": "2026-04-17T19:04:27.740841" }, "raw/Agent/usecases/polymarket-autopilot.md": { - "hash": "7a07785714bc3ac8", - "modified": "2026-04-09T11:31:39.265099+00:00", + "hash": "0de374b94ff0e8e0", + "modified": "2026-04-17T00:38:12.842360+00:00", "slug": "polymarket-autopilot", "source_path": "wiki/sources/polymarket-autopilot.md", - "ingested": true, - "ingested_at": "2026-04-17T19:19:42.404002" + "ingested": false, + "ingested_at": null }, "raw/Agent/usecases/youtube-content-pipeline.md": { "hash": "e1d457953ed50a18", @@ -1029,12 +1029,12 @@ "ingested_at": "2026-04-18T00:50:43.221519" }, "raw/AI/教學 ChatGPT 先做知識整理,再讓 Canva、 Gamma AI 輸出簡報.md": { - "hash": "22f96f3b3818b566", - "modified": "2026-04-14T04:28:42.644429+00:00", + "hash": "1a464ef6525d196f", + "modified": "2026-04-17T00:38:12.842064+00:00", "slug": "jiao-xue-chatgpt-xian-zuo-zhi-shi-zheng-li-zai-rang-canva-gamma-ai-shu-chu-jian-bao", "source_path": "wiki/sources/jiao-xue-chatgpt-xian-zuo-zhi-shi-zheng-li-zai-rang-canva-gamma-ai-shu-chu-jian-bao.md", - "ingested": true, - "ingested_at": "2026-04-18T01:09:47.011802" + "ingested": false, + "ingested_at": null }, "raw/AI/Google 神级生产力工具,所有 GitHub 开源平替都找到了。.md": { "hash": "c276812f0e1a16c8", @@ -1191,158 +1191,150 @@ "raw/AI/GitHub 上 5000 人收藏的 Vibe Coding 神级指南。.md": { "hash": "6a3ce97e4bee7b73", "modified": "2026-04-14T04:28:42.612250+00:00", - "slug": "GitHub-上-5000-人收藏的-Vibe-Coding-神级指南", - "source_path": "wiki/sources/GitHub-上-5000-人收藏的-Vibe-Coding-神级指南.md", - "ingested": false, - "ingested_at": null + "slug": "github-5000-ren-shou-cang-de-vibe-coding-shen-ji-zhi-nan", + "source_path": "wiki/sources/github-5000-ren-shou-cang-de-vibe-coding-shen-ji-zhi-nan.md", + "ingested": true, + "ingested_at": "2026-04-18T06:04:48.283482" }, "raw/AI/系统提示词构建原则.md": { "hash": "4a954a07aa1f2f17", "modified": "2026-04-14T04:28:42.618412+00:00", - "slug": "系统提示词构建原则", - "source_path": "wiki/sources/系统提示词构建原则.md", - "ingested": false, - "ingested_at": null + "slug": "xi-tong-ti-shi-ci-gou-jie-yuan-ze", + "source_path": "wiki/sources/xi-tong-ti-shi-ci-gou-jie-yuan-ze.md", + "ingested": true, + "ingested_at": "2026-04-18T06:19:50.355778" }, "raw/AI/codecrafters-iobuild-your-own-x Master programming by recreating your favorite technologies from scratch.md": { - "hash": "fe614b324a7ec38f", - "modified": "2026-04-14T04:28:42.615716+00:00", - "slug": "codecrafters-iobuild-your-own-x-Master-programming-by-recreating-your-favorite-technologies-from-scratch", - "source_path": "wiki/sources/codecrafters-iobuild-your-own-x-Master-programming-by-recreating-your-favorite-technologies-from-scratch.md", + "hash": "15dd4a8a12692b70", + "modified": "2026-04-17T00:38:12.841690+00:00", + "slug": "codecrafters-iobuild-your-own-x-master-programming-by-recreating-your-favorite-technologies-from-scratch", + "source_path": "wiki/sources/codecrafters-iobuild-your-own-x-master-programming-by-recreating-your-favorite-technologies-from-scratch.md", "ingested": false, "ingested_at": null }, "raw/AI/如何写出完美的Prompt(提示词)?.md": { "hash": "2adb512ec636d7e3", "modified": "2026-04-14T04:28:42.617410+00:00", - "slug": "如何写出完美的Prompt-提示词", - "source_path": "wiki/sources/如何写出完美的Prompt-提示词.md", - "ingested": false, - "ingested_at": null + "slug": "如何写出完美的Prompt-提示词-", + "source_path": "wiki/sources/如何写出完美的Prompt-提示词-.md", + "ingested": true, + "ingested_at": "2026-04-18T06:49:40.652734" }, "raw/AI/3.2 万人收藏的 Claude Skills,才是 AI 这条路上最值得研究的一套范式!.md": { "hash": "dec1dd367a474b92", "modified": "2026-04-14T04:28:42.608233+00:00", - "slug": "3-2-万人收藏的-Claude-Skills-才是-AI-这条路上最值得研究的一套范式", - "source_path": "wiki/sources/3-2-万人收藏的-Claude-Skills-才是-AI-这条路上最值得研究的一套范式.md", - "ingested": false, - "ingested_at": null + "slug": "3-2-wan-ren-shou-cang-de-claude-skills-ai-zhe-tiao-lu-shang-zui-zhi-de-yan-jiu-de-yi-tao-fan-shi", + "source_path": "wiki/sources/3-2-wan-ren-shou-cang-de-claude-skills-ai-zhe-tiao-lu-shang-zui-zhi-de-yan-jiu-de-yi-tao-fan-shi.md", + "ingested": true, + "ingested_at": "2026-04-18T07:04:14.193070" }, "raw/AI/我的工具集.md": { "hash": "b5b5245fe2261b1c", "modified": "2026-04-14T04:28:42.644146+00:00", - "slug": "我的工具集", - "source_path": "wiki/sources/我的工具集.md", - "ingested": false, - "ingested_at": null + "slug": "wo-de-gong-ju-ji", + "source_path": "wiki/sources/wo-de-gong-ju-ji.md", + "ingested": true, + "ingested_at": "2026-04-18T07:30:00.000000+00:00" }, "raw/AI/Nano-Banana Pro Prompting Guide & Strategies 1.md": { - "hash": "25743c16f7799d60", - "modified": "2026-04-14T04:28:42.614511+00:00", - "slug": "Nano-Banana-Pro-Prompting-Guide---Strategies-1", - "source_path": "wiki/sources/Nano-Banana-Pro-Prompting-Guide---Strategies-1.md", - "ingested": false, - "ingested_at": null + "hash": "de3c08227069a283", + "modified": "2026-04-17T18:38:12.000000+00:00", + "slug": "nano-banana-pro-prompting-guide-strategies-1", + "source_path": "wiki/sources/nano-banana-pro-prompting-guide-strategies-1.md", + "ingested": true, + "ingested_at": "2026-04-19T08:17:53.212681" }, "raw/AI/大模型相关术语和框架总结|LLM、MCP、Prompt、RAG、vLLM、Token、数据蒸馏.md": { "hash": "4327c9fae4760e5b", "modified": "2026-04-14T04:28:42.617130+00:00", "slug": "大模型相关术语和框架总结-LLM-MCP-Prompt-RAG-vLLM-Token-数据蒸馏", "source_path": "wiki/sources/大模型相关术语和框架总结-LLM-MCP-Prompt-RAG-vLLM-Token-数据蒸馏.md", - "ingested": false, - "ingested_at": null + "ingested": true, + "ingested_at": "2026-04-18T07:52:47.932582" }, "raw/AI/固定镜头短视频制作的AI全流程解析.md": { "hash": "989580878e6d7d46", "modified": "2026-04-14T04:28:42.616867+00:00", "slug": "固定镜头短视频制作的AI全流程解析", "source_path": "wiki/sources/固定镜头短视频制作的AI全流程解析.md", - "ingested": false, - "ingested_at": null + "ingested": true, + "ingested_at": "2026-04-18T08:05:19.024416" }, "raw/AI/RAG从入门到精通系列1:基础RAG.md": { "hash": "517031840cb87bfb", "modified": "2026-04-14T04:28:42.615169+00:00", "slug": "RAG从入门到精通系列1-基础RAG", "source_path": "wiki/sources/RAG从入门到精通系列1-基础RAG.md", - "ingested": false, - "ingested_at": null + "ingested": true, + "ingested_at": "2026-04-18T08:19:28.782361" }, "raw/AI/AI 解决方案专家培训课程.md": { "hash": "83d7fa1a956636b8", "modified": "2026-04-14T04:28:42.611726+00:00", - "slug": "AI-解决方案专家培训课程", + "slug": "AI-jie-jue-fang-an-zhuan-jia-pei-xun-ke-cheng", "source_path": "wiki/sources/AI-解决方案专家培训课程.md", - "ingested": false, - "ingested_at": null + "ingested": true, + "ingested_at": "2026-04-18T08:37:56.596451" }, "raw/AI/2025 年 11 个神级 AI 开源平替,GitHub 杀疯了。.md": { "hash": "f8cf6223112ec24c", "modified": "2026-04-14T04:28:42.607812+00:00", - "slug": "2025-年-11-个神级-AI-开源平替-GitHub-杀疯了", - "source_path": "wiki/sources/2025-年-11-个神级-AI-开源平替-GitHub-杀疯了.md", - "ingested": false, - "ingested_at": null + "slug": "2025-年-11-个-神级-AI-开源平替-GitHub-杀疯了", + "source_path": "wiki/sources/2025-年-11-个-神级-AI-开源平替-GitHub-杀疯了.md", + "ingested": true, + "ingested_at": "2026-04-18T08:48:02.243062" }, "raw/AI/全网最全!Nano Banana 2 使用指南(2025年12月更新) 1.md": { "hash": "50546ce87967e2af", "modified": "2026-04-14T04:28:42.616589+00:00", - "slug": "全网最全-Nano-Banana-2-使用指南-2025年12月更新--1", - "source_path": "wiki/sources/全网最全-Nano-Banana-2-使用指南-2025年12月更新--1.md", - "ingested": false, - "ingested_at": null + "slug": "全网最全-Nano-Banana-2-使用指南-2025年12月更新-1", + "source_path": "wiki/sources/全网最全-Nano-Banana-2-使用指南-2025年12月更新-1.md", + "ingested": true, + "ingested_at": "2026-04-18T09:05:17.748167" }, "raw/AI/Multi-Agent System Reliability.md": { "hash": "a88f875cac630724", "modified": "2026-04-14T04:28:42.613557+00:00", "slug": "Multi-Agent-System-Reliability", "source_path": "wiki/sources/Multi-Agent-System-Reliability.md", - "ingested": false, - "ingested_at": null + "ingested": true, + "ingested_at": "2026-04-18T09:20:41.834284" }, "raw/AI/我用 Gemini 3 一口气做了 10 个应用,附教程.md": { "hash": "f88d61b7b80b27ea", "modified": "2026-04-14T04:28:42.617887+00:00", "slug": "我用-Gemini-3-一口气做了-10-个应用-附教程", "source_path": "wiki/sources/我用-Gemini-3-一口气做了-10-个应用-附教程.md", - "ingested": false, - "ingested_at": null + "ingested": true, + "ingested_at": "2026-04-18T09:34:54.259952" }, "raw/AI/If you have multiple interests, do not waste the next 2-3 years 如果你有多项兴趣爱好,不要浪费接下来的两三年时间。.md": { "hash": "f754a24079461d5e", "modified": "2026-04-14T04:28:42.612951+00:00", - "slug": "If-you-have-multiple-interests--do-not-waste-the-next-2-3-years--如果你有多项兴趣爱好-不要浪费接下来的两三年时间", - "source_path": "wiki/sources/If-you-have-multiple-interests--do-not-waste-the-next-2-3-years--如果你有多项兴趣爱好-不要浪费接下来的两三年时间.md", - "ingested": false, - "ingested_at": null + "slug": "如果你有多项兴趣爱好-不要浪费接下来的两三年时间", + "source_path": "wiki/sources/如果你有多项兴趣爱好-不要浪费接下来的两三年时间.md", + "ingested": true, + "ingested_at": "2026-04-18T09:50:07.970814" }, "raw/AI/如何利用Sora接口实现视频自动化生成工作流.md": { "hash": "6a966d45acfaad43", "modified": "2026-04-14T04:28:42.617677+00:00", - "slug": "如何利用Sora接口实现视频自动化生成工作流", - "source_path": "wiki/sources/如何利用Sora接口实现视频自动化生成工作流.md", - "ingested": false, - "ingested_at": null + "slug": "如何利用sora接口实现视频自动化生成工作流", + "source_path": "wiki/sources/如何利用sora接口实现视频自动化生成工作流.md", + "ingested": true, + "ingested_at": "2026-04-18T10:04:18.752933" }, "raw/Skills/Last30Days-使用指南.md": { - "hash": "18618c31dec2bb5f", - "modified": "2026-04-14T04:28:42.624264+00:00", + "hash": "d202f159aeea9ce9", + "modified": "2026-04-18T09:30:37.466328+00:00", "slug": "Last30Days-使用指南", "source_path": "wiki/sources/Last30Days-使用指南.md", "ingested": false, "ingested_at": null }, - "raw/Skills/baoyu-skills-claude-code-技能集.md": { - "hash": "1de1a2c2d9b37c1f", - "modified": "2026-04-14T04:28:42.624582+00:00", - "slug": "baoyu-skills-claude-code-技能集", - "source_path": "wiki/sources/baoyu-skills-claude-code-技能集.md", - "ingested": false, - "ingested_at": null - }, "raw/Skills/GOG-CLI-安装配置指南.md": { - "hash": "dee4fc6505a2a0ad", - "modified": "2026-04-14T04:28:42.624049+00:00", + "hash": "bdedc3ffe48b85ef", + "modified": "2026-04-17T00:38:12.844464+00:00", "slug": "GOG-CLI-安装配置指南", "source_path": "wiki/sources/GOG-CLI-安装配置指南.md", "ingested": false, @@ -1351,110 +1343,110 @@ "raw/跨境电商/Scrapy + Playwright 抓取TikTok Shop Data.md": { "hash": "cbb79eb5844b1907", "modified": "2026-04-09T11:31:39.192927+00:00", - "slug": "Scrapy---Playwright-抓取TikTok-Shop-Data", - "source_path": "wiki/sources/Scrapy---Playwright-抓取TikTok-Shop-Data.md", - "ingested": false, - "ingested_at": null + "slug": "Scrapy-Playwright-抓取TikTok-Shop-Data", + "source_path": "wiki/sources/Scrapy-Playwright-抓取TikTok-Shop-Data.md", + "ingested": true, + "ingested_at": "2026-04-18T11:04:58.082248" }, "raw/跨境电商/TK美国面单授权及操作流程.md": { "hash": "809f0114b3395b26", "modified": "2026-04-09T11:31:39.193131+00:00", "slug": "TK美国面单授权及操作流程", "source_path": "wiki/sources/TK美国面单授权及操作流程.md", - "ingested": false, - "ingested_at": null + "ingested": true, + "ingested_at": "2026-04-18T11:08:40.112019" }, "raw/跨境电商/超达物流定价.md": { "hash": "afb9efbe4df893e9", "modified": "2026-04-09T11:31:39.193341+00:00", - "slug": "超达物流定价", - "source_path": "wiki/sources/超达物流定价.md", - "ingested": false, - "ingested_at": null + "slug": "chao-da-wu-liu-ding-jia", + "source_path": "wiki/sources/chao-da-wu-liu-ding-jia.md", + "ingested": true, + "ingested_at": "2026-04-18T11:23:46.615420" }, "raw/跨境电商/做TK跨境思路不对努力白费.md": { "hash": "f2276ee5969e9701", "modified": "2026-04-09T11:31:39.193553+00:00", "slug": "做TK跨境思路不对努力白费", "source_path": "wiki/sources/做TK跨境思路不对努力白费.md", - "ingested": false, - "ingested_at": null + "ingested": true, + "ingested_at": "2026-04-18T11:35:43.461739" }, "raw/跨境电商/TikTok Shop - Apache Superset Dashboard设计思路.md": { "hash": "ca3a3672eaf68cff", "modified": "2026-04-09T11:31:39.194126+00:00", - "slug": "TikTok-Shop---Apache-Superset-Dashboard设计思路", - "source_path": "wiki/sources/TikTok-Shop---Apache-Superset-Dashboard设计思路.md", - "ingested": false, - "ingested_at": null + "slug": "TikTok-Shop-Apache-Superset-Dashboard设计思路", + "source_path": "wiki/sources/TikTok-Shop-Apache-Superset-Dashboard设计思路.md", + "ingested": true, + "ingested_at": "2026-04-18T11:49:14.551009" }, "raw/跨境电商/电商视频Prompt.md": { "hash": "77272706c2e1bcb4", "modified": "2026-04-09T11:31:39.194362+00:00", "slug": "电商视频Prompt", "source_path": "wiki/sources/电商视频Prompt.md", - "ingested": false, - "ingested_at": null + "ingested": true, + "ingested_at": "2026-04-18T12:03:38.634394" }, "raw/跨境电商/电商如何选品 如何找到爆款 选品策略.md": { "hash": "f89b9e48849625dd", "modified": "2026-04-09T11:31:39.194588+00:00", - "slug": "电商如何选品-如何找到爆款-选品策略", - "source_path": "wiki/sources/电商如何选品-如何找到爆款-选品策略.md", - "ingested": false, - "ingested_at": null + "slug": "dian-shang-xuan-pin-bao-kuan-xuan-pin-celue", + "source_path": "wiki/sources/dian-shang-xuan-pin-bao-kuan-xuan-pin-celue.md", + "ingested": true, + "ingested_at": "2026-04-18T12:21:05.169695" }, "raw/Home Office/Building your Quartz.md": { "hash": "eee748621c38d104", "modified": "2026-04-17T00:38:12.806819+00:00", - "slug": "Building-your-Quartz", - "source_path": "wiki/sources/Building-your-Quartz.md", - "ingested": false, - "ingested_at": null + "slug": "building-your-quartz", + "source_path": "wiki/sources/building-your-quartz.md", + "ingested": true, + "ingested_at": "2026-04-18T12:38:07.225739" }, "raw/Others/可自动化、可扩展、AI增强的电商数据采集与处理系统.md": { "hash": "c8c16eb8d8257eb2", "modified": "2026-04-17T00:38:12.844282+00:00", - "slug": "可自动化-可扩展-AI增强的电商数据采集与处理系统", - "source_path": "wiki/sources/可自动化-可扩展-AI增强的电商数据采集与处理系统.md", - "ingested": false, - "ingested_at": null + "slug": "ai-enhanced-ecommerce-data-collection-processing-system", + "source_path": "wiki/sources/ai-enhanced-ecommerce-data-collection-processing-system.md", + "ingested": true, + "ingested_at": "2026-04-18T12:49:41.871219" }, "raw/Agent/AI-Memory-Tools-Two-Camps.md": { "hash": "0d0d2ea812d0b5a7", "modified": "2026-04-17T00:38:12.842206+00:00", "slug": "AI-Memory-Tools-Two-Camps", "source_path": "wiki/sources/AI-Memory-Tools-Two-Camps.md", - "ingested": false, - "ingested_at": null + "ingested": true, + "ingested_at": "2026-04-18T13:10:54.492947" }, "raw/AI/Learn AI for free directly from top companies.md": { "hash": "22234625bf449944", "modified": "2026-04-16T13:08:55.731575+00:00", - "slug": "Learn-AI-for-free-directly-from-top-companies", - "source_path": "wiki/sources/Learn-AI-for-free-directly-from-top-companies.md", - "ingested": false, - "ingested_at": null + "slug": "learn-ai-for-free-directly-from-top-companies", + "source_path": "wiki/sources/learn-ai-for-free-directly-from-top-companies.md", + "ingested": true, + "ingested_at": "2026-04-18T13:23:31.012229" }, "raw/AI/在 Ubuntu 安装 Ollama 并运行 Qwen2.5‑Coder 7B.md": { "hash": "0d9deaa455ccdb62", "modified": "2026-04-17T00:38:12.841821+00:00", - "slug": "在-Ubuntu-安装-Ollama-并运行-Qwen2-5-Coder-7B", - "source_path": "wiki/sources/在-Ubuntu-安装-Ollama-并运行-Qwen2-5-Coder-7B.md", - "ingested": false, - "ingested_at": null + "slug": "在-ubuntu-安装-ollama-并运行-qwen2.5-coder-7b", + "source_path": "wiki/sources/在-Ubuntu-安装-Ollama-并运行-Qwen2.5-Coder-7B.md", + "ingested": true, + "ingested_at": "2026-04-18T13:36:23.730927" }, "raw/Skills/Obsidian 必装 Skills.md": { - "hash": "d220b61237122c69", - "modified": "2026-04-16T13:08:55.732025+00:00", + "hash": "85cefbb11b518899", + "modified": "2026-04-18T09:29:40.028316+00:00", "slug": "Obsidian-必装-Skills", "source_path": "wiki/sources/Obsidian-必装-Skills.md", "ingested": false, "ingested_at": null }, "raw/Skills/我做了个 Skill:让 AI 帮你生成 Logo 和图标.md": { - "hash": "6adfa8b52c20d567", - "modified": "2026-04-16T13:08:55.732201+00:00", + "hash": "9ff92dfe871428bd", + "modified": "2026-04-20T06:31:44.738202+00:00", "slug": "我做了个-Skill-让-AI-帮你生成-Logo-和图标", "source_path": "wiki/sources/我做了个-Skill-让-AI-帮你生成-Logo-和图标.md", "ingested": false, @@ -1463,16 +1455,2720 @@ "raw/Skills/Obsidian CLI.md": { "hash": "f944c137e557a40c", "modified": "2026-04-16T13:08:55.731725+00:00", - "slug": "Obsidian-CLI", - "source_path": "wiki/sources/Obsidian-CLI.md", - "ingested": false, - "ingested_at": null + "slug": "obsidian-cli", + "source_path": "wiki/sources/obsidian-cli.md", + "ingested": true, + "ingested_at": "2026-04-18T14:20:25.021087" }, "raw/Skills/Obsidian 官方 CLI 命令全景速查表.md": { "hash": "aff8e38f7b0fe950", "modified": "2026-04-16T13:08:55.731872+00:00", - "slug": "Obsidian-官方-CLI-命令全景速查表", - "source_path": "wiki/sources/Obsidian-官方-CLI-命令全景速查表.md", + "slug": "Obsidian-官方-CLI-命令-全景-速查表", + "source_path": "wiki/sources/Obsidian-官方-CLI-命令-全景-速查表.md", + "ingested": true, + "ingested_at": "2026-04-18T14:39:18.002689" + }, + "raw/Skills/fireworks-tech-graph.md": { + "hash": "0091bc505ec41422", + "modified": "2026-04-18T00:15:54.232076+00:00", + "slug": "fireworks-tech-graph", + "source_path": "wiki/sources/fireworks-tech-graph.md", + "ingested": true, + "ingested_at": "2026-04-18T15:05:15.899099" + }, + "raw/Home Office/WSL2 启动与网络配置指南.md": { + "hash": "5db067c97ccf95fd", + "modified": "2026-04-18T04:03:16.616780+00:00", + "slug": "WSL2-启动与网络配置指南", + "source_path": "wiki/sources/WSL2-启动与网络配置指南.md", + "ingested": true, + "ingested_at": "2026-04-18T15:19:41.817550" + }, + "raw/Home Office/Install WSL.md": { + "hash": "265769c00e2084ba", + "modified": "2026-04-18T04:03:16.616612+00:00", + "slug": "install-wsl", + "source_path": "wiki/sources/install-wsl.md", + "ingested": true, + "ingested_at": "2026-04-18T15:34:55.557100" + }, + "raw/Home Office/Mac必装软件清单-2026-04-17.md": { + "hash": "da2929f7e4e4c36b", + "modified": "2026-04-18T05:46:09.785055+00:00", + "slug": "mac-bi-zhuang-ruan-jian-qing-dan-2026-04-17", + "source_path": "wiki/sources/mac-bi-zhuang-ruan-jian-qing-dan-2026-04-17.md", + "ingested": true, + "ingested_at": "2026-04-18T15:52:25.315000" + }, + "raw/Home Office/实战笔记:本地部署 RSSHub 并获取 YouTube 订阅.md": { + "hash": "c37723bff7522dc0", + "modified": "2026-04-21T00:02:52.577798+00:00", + "slug": "shi-zhan-bi-ji-ben-di-bu-shu-rsshub-bing-huo-qu-youtube-ding-yue", + "source_path": "wiki/sources/shi-zhan-bi-ji-ben-di-bu-shu-rsshub-bing-huo-qu-youtube-ding-yue.md", + "ingested": false, + "ingested_at": null + }, + "raw/Skills/blogwatcher-daily收藏.md": { + "hash": "b2550c49bfb87a50", + "modified": "2026-04-18T07:17:56.439023+00:00", + "slug": "blogwatcher-daily-shou-cang", + "source_path": "wiki/sources/blogwatcher-daily-shou-cang.md", + "ingested": true, + "ingested_at": "2026-04-18T16:04:37.219428" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/01_AWS-Landing-Zone/ctp-topic-44-aws-backup-in-micro-focus.md": { + "hash": "c49d39c18e6ca650", + "modified": "2026-04-18T08:17:51.152896+00:00", + "slug": "ctp-topic-44-aws-backup-in-micro-focus", + "source_path": "wiki/sources/ctp-topic-44-aws-backup-in-micro-focus.md", + "ingested": true, + "ingested_at": "2026-04-18T16:41:03.840741" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/01_AWS-Landing-Zone/ctp-topic-14-octane-hub-on-aws-real-life-experience-moving-production-services-i.md": { + "hash": "466aac3c06a0890a", + "modified": "2026-04-18T08:17:51.152126+00:00", + "slug": "ctp-topic-14-octane-hub-on-aws-real-life-experience", + "source_path": "wiki/sources/ctp-topic-14-octane-hub-on-aws-real-life-experience.md", + "ingested": true, + "ingested_at": "2026-04-18T17:07:26.401733" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/01_AWS-Landing-Zone/ctp-topic-66-exposing-the-differences-between-postgresql-rds-and-aurora.md": { + "hash": "aa5badc7371eaf10", + "modified": "2026-04-18T08:17:51.153872+00:00", + "slug": "ctp-topic-66-exposing-the-differences-between-postgresql-rds-and-aurora", + "source_path": "wiki/sources/ctp-topic-66-exposing-the-differences-between-postgresql-rds-and-aurora.md", + "ingested": true, + "ingested_at": "2026-04-18T17:20:26.470786" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/01_AWS-Landing-Zone/ctp-topic-17-active-directory-services-in-gruntwork-aws-lzs.md": { + "hash": "03f112eab6c2111a", + "modified": "2026-04-18T08:17:51.152195+00:00", + "slug": "ctp-topic-17-active-directory-services-in-gruntwork-aws-lzs", + "source_path": "wiki/sources/ctp-topic-17-active-directory-services-in-gruntwork-aws-lzs.md", + "ingested": true, + "ingested_at": "2026-04-18T17:50:02.572817" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/01_AWS-Landing-Zone/ctp-topic-46-netapps-on-aws.md": { + "hash": "2a1f4689117bed5b", + "modified": "2026-04-18T08:17:51.152964+00:00", + "slug": "ctp-topic-46-netapps-on-aws", + "source_path": "wiki/sources/ctp-topic-46-netapps-on-aws.md", + "ingested": true, + "ingested_at": "2026-04-18T18:16:46.474150" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/01_AWS-Landing-Zone/ctp-topic-51-architecting-with-aws-purpose-built-databases.md": { + "hash": "535c23d83e5d0793", + "modified": "2026-04-18T08:17:51.153387+00:00", + "slug": "ctp-topic-51-architecting-with-aws-purpose-built-databases", + "source_path": "wiki/sources/ctp-topic-51-architecting-with-aws-purpose-built-databases.md", + "ingested": true, + "ingested_at": "2026-04-18T18:40:08.161458" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/01_AWS-Landing-Zone/ctp-topic-1-gruntwork-landing-zone-architecture.md": { + "hash": "6a21d9ee850601d5", + "modified": "2026-04-18T08:17:51.151977+00:00", + "slug": "ctp-topic-1-gruntwork-landing-zone-architecture", + "source_path": "wiki/sources/ctp-topic-1-gruntwork-landing-zone-architecture.md", + "ingested": true, + "ingested_at": "2026-04-18T18:48:32.208759" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/01_AWS-Landing-Zone/ctp-topic-72-implementing-an-enterprise-dr-strategy-using-aws-backup.md": { + "hash": "3ea5863c5e9b4e1d", + "modified": "2026-04-18T08:17:51.154494+00:00", + "slug": "ctp-topic-72-implementing-an-enterprise-dr-strategy-using-aws-backup", + "source_path": "wiki/sources/ctp-topic-72-implementing-an-enterprise-dr-strategy-using-aws-backup.md", + "ingested": true, + "ingested_at": "2026-04-18T19:23:02.673654" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/01_AWS-Landing-Zone/ctp-topic-47-enterprise-architecture-cloud-standards.md": { + "hash": "a7ebd57061dad8de", + "modified": "2026-04-18T08:17:51.153084+00:00", + "slug": "ctp-topic-47-enterprise-architecture-cloud-standards", + "source_path": "wiki/sources/ctp-topic-47-enterprise-architecture-cloud-standards.md", + "ingested": true, + "ingested_at": "2026-04-18T19:36:05.909773" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/01_AWS-Landing-Zone/ctp-topic-28-aws-tag-validation-tool.md": { + "hash": "6c14bae6d17f0ed5", + "modified": "2026-04-18T08:17:51.152479+00:00", + "slug": "ctp-topic-28-aws-tag-validation-tool", + "source_path": "wiki/sources/ctp-topic-28-aws-tag-validation-tool.md", + "ingested": true, + "ingested_at": "2026-04-18T19:54:52.235262" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/01_AWS-Landing-Zone/ctp-topic-73-aws-backup-implementation-of-the-cloud-transformation-program.md": { + "hash": "5652ec8311f670df", + "modified": "2026-04-18T08:17:51.154644+00:00", + "slug": "ctp-topic-73-aws-backup-implementation-of-the-cloud-transformation-program", + "source_path": "wiki/sources/ctp-topic-73-aws-backup-implementation-of-the-cloud-transformation-program.md", + "ingested": true, + "ingested_at": "2026-04-18T20:11:17.379684" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/01_AWS-Landing-Zone/ctp-topic-10-aws-landing-zone-lz-data-collection-tagging-related-security.md": { + "hash": "2a0759f3328b4aca", + "modified": "2026-04-18T08:17:51.152057+00:00", + "slug": "ctp-topic-10-aws-landing-zone-lz-data-collection-tagging-related-security", + "source_path": "wiki/sources/ctp-topic-10-aws-landing-zone-lz-data-collection-tagging-related-security.md", + "ingested": true, + "ingested_at": "2026-04-18T20:36:34.600660" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/01_AWS-Landing-Zone/ctp-topic-35-aws-landing-zone-design-refresher-saas-labs.md": { + "hash": "2bb776a43a566879", + "modified": "2026-04-18T08:17:51.152656+00:00", + "slug": "ctp-topic-35-aws-landing-zone-design-refresher-saas-labs", + "source_path": "wiki/sources/ctp-topic-35-aws-landing-zone-design-refresher-saas-labs.md", + "ingested": true, + "ingested_at": "2026-04-18T20:50:57.370164" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/01_AWS-Landing-Zone/ctp-topic-34-azure-landing-zone-architecture-overview.md": { + "hash": "3d4daf9bab61b692", + "modified": "2026-04-18T08:17:51.152541+00:00", + "slug": "ctp-topic-34-azure-landing-zone-architecture-overview", + "source_path": "wiki/sources/ctp-topic-34-azure-landing-zone-architecture-overview.md", + "ingested": true, + "ingested_at": "2026-04-18T21:10:30.273368" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/01_AWS-Landing-Zone/ctp-topic-7-saas-landing-zone-design.md": { + "hash": "c767d61e044afdc8", + "modified": "2026-04-18T08:17:51.154348+00:00", + "slug": "ctp-topic-7-saas-landing-zone-design", + "source_path": "wiki/sources/ctp-topic-7-saas-landing-zone-design.md", + "ingested": true, + "ingested_at": "2026-04-18T21:20:57.821884" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/01_AWS-Landing-Zone/learning-sessions-standard-amis-updates-20231205-160324-meeting-recording-2.md": { + "hash": "00e94b6967a46a05", + "modified": "2026-04-18T08:17:51.154784+00:00", + "slug": "learning-sessions-standard-amis-updates-20231205-160324-meeting-recording-2", + "source_path": "wiki/sources/learning-sessions-standard-amis-updates-20231205-160324-meeting-recording-2.md", + "ingested": true, + "ingested_at": "2026-04-18T21:36:33.305384" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/01_AWS-Landing-Zone/ctp-topic-25-labs-landing-zone-overview-itom-teams.md": { + "hash": "78b07eeb4452e6fc", + "modified": "2026-04-18T08:17:51.152272+00:00", + "slug": "ctp-topic-25-labs-landing-zone-overview-itom-teams", + "source_path": "wiki/sources/ctp-topic-25-labs-landing-zone-overview-itom-teams.md", + "ingested": true, + "ingested_at": "2026-04-18T21:51:11.631148" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/01_AWS-Landing-Zone/ctp-topic-58-aws-ec2-image-builder.md": { + "hash": "1dd474ee0e6d0c2a", + "modified": "2026-04-18T08:17:51.153742+00:00", + "slug": "ctp-topic-58-aws-ec2-image-builder", + "source_path": "wiki/sources/ctp-topic-58-aws-ec2-image-builder.md", + "ingested": true, + "ingested_at": "2026-04-18T22:28:53.606678" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/01_AWS-Landing-Zone/ctp-topic-68-introduction-to-redshift.md": { + "hash": "aa476972de56036b", + "modified": "2026-04-18T08:17:51.154205+00:00", + "slug": "ctp-topic-68-introduction-to-redshift", + "source_path": "wiki/sources/ctp-topic-68-introduction-to-redshift.md", + "ingested": true, + "ingested_at": "2026-04-18T22:40:00.401325" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/01_AWS-Landing-Zone/ctp-topic-26-standard-ami-build-publish-share-processes.md": { + "hash": "3d4a431a9893ffb5", + "modified": "2026-04-18T08:17:51.152413+00:00", + "slug": "ctp-topic-26-standard-ami-build-publish-share-processes", + "source_path": "wiki/sources/ctp-topic-26-standard-ami-build-publish-share-processes.md", + "ingested": true, + "ingested_at": "2026-04-18T22:48:48.142822" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/01_AWS-Landing-Zone/ctp-topic-40-saas-database-architecture-on-aws-cloud.md": { + "hash": "1fe489cae6f60a71", + "modified": "2026-04-18T08:17:51.152770+00:00", + "slug": "ctp-topic-40-saas-database-architecture-on-aws-cloud", + "source_path": "wiki/sources/ctp-topic-40-saas-database-architecture-on-aws-cloud.md", + "ingested": true, + "ingested_at": "2026-04-18T23:18:46.372475" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/01_AWS-Landing-Zone/ctp-topic-50-ami-roadmap-for-aws-amis.md": { + "hash": "23360cbf9265dfe5", + "modified": "2026-04-18T08:17:51.153270+00:00", + "slug": "ctp-topic-50-ami-roadmap-for-aws-amis", + "source_path": "wiki/sources/ctp-topic-50-ami-roadmap-for-aws-amis.md", + "ingested": true, + "ingested_at": "2026-04-18T23:35:03.241269" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/08_Networking/ctp-topic-22-global-dns-service-offerings.md": { + "hash": "95d79d5d59d3bdb5", + "modified": "2026-04-18T08:17:51.162157+00:00", + "slug": "ctp-topic-22-global-dns-service-offerings", + "source_path": "wiki/sources/ctp-topic-22-global-dns-service-offerings.md", + "ingested": true, + "ingested_at": "2026-04-18T23:35:03.241269" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/08_Networking/ctp-topic-36-sendgrid-as-an-email-service.md": { + "hash": "94027ae5005d1735", + "modified": "2026-04-18T08:17:51.162329+00:00", + "slug": "ctp-topic-36-sendgrid-as-an-email-service", + "source_path": "wiki/sources/ctp-topic-36-sendgrid-as-an-email-service.md", + "ingested": true, + "ingested_at": "2026-04-19T00:00:00" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/08_Networking/ctp-topic-19-configuring-dns-within-aws-lzs.md": { + "hash": "8b742ddf0d586490", + "modified": "2026-04-18T08:17:51.162099+00:00", + "slug": "ctp-topic-19-configuring-dns-within-aws-lzs", + "source_path": "wiki/sources/ctp-topic-19-configuring-dns-within-aws-lzs.md", + "ingested": true, + "ingested_at": "2026-04-19T00:24:59.544636" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/08_Networking/ctp-topic-45-automatic-ip-address-allocation-with-ipam.md": { + "hash": "17bb1ee58b538651", + "modified": "2026-04-18T08:17:51.162535+00:00", + "slug": "ctp-topic-45-automatic-ip-address-allocation-with-ipam", + "source_path": "wiki/sources/ctp-topic-45-automatic-ip-address-allocation-with-ipam.md", + "ingested": true, + "ingested_at": "2026-04-19T00:34:30.404853" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/08_Networking/ctp-topic-61-workload-vpc-provision-with-ipam-automation.md": { + "hash": "3de5f5fec3d3ea8a", + "modified": "2026-04-18T08:17:51.162632+00:00", + "slug": "ctp-topic-61-workload-vpc-provision-with-ipam-automation", + "source_path": "wiki/sources/ctp-topic-61-workload-vpc-provision-with-ipam-automation.md", + "ingested": true, + "ingested_at": "2026-04-19T00:51:14.195029" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/08_Networking/ctp-topic-43-vmware-cloud-on-aws.md": { + "hash": "306e509a1f745a9a", + "modified": "2026-04-18T08:17:51.162437+00:00", + "slug": "ctp-topic-43-vmware-cloud-on-aws", + "source_path": "wiki/sources/ctp-topic-43-vmware-cloud-on-aws.md", + "ingested": true, + "ingested_at": "2026-04-19T01:20:50.550879" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/08_Networking/ctp-topic-18-wide-area-networking-in-aws-cloud.md": { + "hash": "7162c7c57cc08b10", + "modified": "2026-04-18T08:17:51.162039+00:00", + "slug": "ctp-topic-18-wide-area-networking-in-aws-cloud", + "source_path": "wiki/sources/ctp-topic-18-wide-area-networking-in-aws-cloud.md", + "ingested": true, + "ingested_at": "2026-04-19T01:51:41.469501" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/08_Networking/ctp-topic-31-network-segregation-and-secure-access-to-the-new-aws-landing-zones.md": { + "hash": "64b9de78b4f8351a", + "modified": "2026-04-18T08:17:51.162215+00:00", + "slug": "ctp-topic-31-network-segregation-secure-access-aws-landing-zones", + "source_path": "wiki/sources/ctp-topic-31-network-segregation-secure-access-aws-landing-zones.md", + "ingested": true, + "ingested_at": "2026-04-19T02:04:00.984302" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/08_Networking/ctp-topic-69-best-practices-for-migrating-on-premises-iod-virtual-machines-to-vm.md": { + "hash": "af367272d4175da7", + "modified": "2026-04-18T08:17:51.162838+00:00", + "slug": "ctp-topic-69-best-practices-for-migrating-on-premises-iod-virtual-machines-to-vm", + "source_path": "wiki/sources/ctp-topic-69-best-practices-for-migrating-on-premises-iod-virtual-machines-to-vm.md", + "ingested": true, + "ingested_at": "2026-04-19T02:20:17.825525" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/10_OpenText-Series/ctp-topic-30-managing-change.md": { + "hash": "04882b4f0cb8628a", + "modified": "2026-04-18T08:17:51.163896+00:00", + "slug": "ctp-topic-30-managing-change", + "source_path": "wiki/sources/ctp-topic-30-managing-change.md", + "ingested": true, + "ingested_at": "2026-04-19T02:36:43.445203" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/10_OpenText-Series/public-cloud-learning-sessions-opentext-evolving-from-dr-to-recovery-assurance-2.md": { + "hash": "6645dbfbfed329e2", + "modified": "2026-04-18T08:17:51.164842+00:00", + "slug": "public-cloud-learning-sessions-opentext-evolving-from-dr-to-recovery-assurance-2", + "source_path": "wiki/sources/public-cloud-learning-sessions-opentext-evolving-from-dr-to-recovery-assurance-2.md", + "ingested": true, + "ingested_at": "2026-04-19T02:54:21.530235" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/10_OpenText-Series/ctp-topic-65-tracing-the-value-delivered-in-cloud-transformation.md": { + "hash": "95581d9490f2fe88", + "modified": "2026-04-18T08:17:51.164513+00:00", + "slug": "ctp-topic-65-tracing-the-value-delivered-in-cloud-transformation", + "source_path": "wiki/sources/ctp-topic-65-tracing-the-value-delivered-in-cloud-transformation.md", + "ingested": true, + "ingested_at": "2026-04-19T03:04:41.941376" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/10_OpenText-Series/ctp-topic-4-using-agile-to-run-the-cloud-transformation-program.md": { + "hash": "ea15d8a0ae537968", + "modified": "2026-04-18T08:17:51.163951+00:00", + "slug": "ctp-topic-4-using-agile-to-run-the-cloud-transformation-program", + "source_path": "wiki/sources/ctp-topic-4-using-agile-to-run-the-cloud-transformation-program.md", + "ingested": true, + "ingested_at": "2026-04-19T03:17:55.959609" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/10_OpenText-Series/ctp-topic-20-program-demand-process-flow-and-poc-onboarding.md": { + "hash": "5faaf82364d18605", + "modified": "2026-04-18T08:17:51.163780+00:00", + "slug": "ctp-topic-20-program-demand-process-flow-and-poc-onboarding", + "source_path": "wiki/sources/ctp-topic-20-program-demand-process-flow-and-poc-onboarding.md", + "ingested": true, + "ingested_at": "2026-04-19T03:33:13.728219" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/10_OpenText-Series/ctp-topic-10-aws-landing-zone-lz-data-collection-tagging-related-security.md": { + "hash": "68da0fd32825d931", + "modified": "2026-04-18T08:17:51.163718+00:00", + "slug": "ctp-topic-10-aws-landing-zone-lz-data-collection-tagging-related-security", + "source_path": "wiki/sources/ctp-topic-10-aws-landing-zone-lz-data-collection-tagging-related-security.md", + "ingested": true, + "ingested_at": "2026-04-19T03:51:54.288283" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/10_OpenText-Series/ctp-topic-41-nfrs-and-error-budgets.md": { + "hash": "743692fbd600cf13", + "modified": "2026-04-18T08:17:51.164062+00:00", + "slug": "ctp-topic-41-nfrs-and-error-budgets", + "source_path": "wiki/sources/ctp-topic-41-nfrs-and-error-budgets.md", + "ingested": true, + "ingested_at": "2026-04-19T04:04:17.519524" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/10_OpenText-Series/public-cloud-learning-sessions-opentext-tagging-standard-v2-20250429-170111-meet.md": { + "hash": "435c002378d84e5c", + "modified": "2026-04-18T08:17:51.165186+00:00", + "slug": "public-cloud-learning-sessions-opentext-tagging-standard-v2-20250429-170111-meet", + "source_path": "wiki/sources/public-cloud-learning-sessions-opentext-tagging-standard-v2-20250429-170111-meet.md", + "ingested": true, + "ingested_at": "2026-04-19T04:21:34.445873" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/10_OpenText-Series/public-cloud-learning-sessions-opentext-github-enterprise-to-gitlab-migration-20.md": { + "hash": "90b001e3d27f4730", + "modified": "2026-04-18T08:17:51.164958+00:00", + "slug": "public-cloud-learning-sessions-opentext-github-enterprise-to-gitlab-migration-20", + "source_path": "wiki/sources/public-cloud-learning-sessions-opentext-github-enterprise-to-gitlab-migration-20.md", + "ingested": true, + "ingested_at": "2026-04-19T04:49:42.198146" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/10_OpenText-Series/ctp-topic-53-why-bother-with-cloud.md": { + "hash": "7c6ef68fdd70977a", + "modified": "2026-04-18T08:17:51.164176+00:00", + "slug": "ctp-topic-53-why-bother-with-cloud", + "source_path": "wiki/sources/ctp-topic-53-why-bother-with-cloud.md", + "ingested": true, + "ingested_at": "2026-04-19T05:04:16.616649" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/10_OpenText-Series/ctp-topic-6-aws-workspaces-demo.md": { + "hash": "36dd92cbb63d664a", + "modified": "2026-04-18T08:17:51.164410+00:00", + "slug": "ctp-topic-6-aws-workspaces-demo", + "source_path": "wiki/sources/ctp-topic-6-aws-workspaces-demo.md", + "ingested": true, + "ingested_at": "2026-04-19T05:22:35.375639" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/10_OpenText-Series/public-cloud-learning-sessions-opentext-thor-platform-flows-20241210-160056-meet.md": { + "hash": "124d4ec9e69b7dd1", + "modified": "2026-04-18T08:17:51.165303+00:00", + "slug": "public-cloud-learning-sessions-opentext-thor-platform-flows-20241210-160056-meet", + "source_path": "wiki/sources/public-cloud-learning-sessions-opentext-thor-platform-flows-20241210-160056-meet.md", + "ingested": true, + "ingested_at": "2026-04-19T05:34:44.588210" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/10_OpenText-Series/ctp-topic-57-product-backlog-managing-demand.md": { + "hash": "b3622d1992f28228", + "modified": "2026-04-18T08:17:51.164282+00:00", + "slug": "ctp-topic-57-product-backlog-managing-demand", + "source_path": "wiki/sources/ctp-topic-57-product-backlog-managing-demand.md", + "ingested": true, + "ingested_at": "2026-04-19T05:52:04.474796" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/10_OpenText-Series/ctp-topic-23-introduction-to-the-technical-architecture-team-and-function.md": { + "hash": "04db7dd79d9c1527", + "modified": "2026-04-18T08:17:51.163838+00:00", + "slug": "ctp-topic-23-introduction-to-the-technical-architecture-team-and-function", + "source_path": "wiki/sources/ctp-topic-23-introduction-to-the-technical-architecture-team-and-function.md", + "ingested": true, + "ingested_at": "2026-04-19T06:04:11.527748" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/10_OpenText-Series/public-cloud-learning-sessions-tagging-standards-for-all-hyperscalers-20240123-1.md": { + "hash": "cf8d6cd43ac42be0", + "modified": "2026-04-18T08:17:51.165412+00:00", + "slug": "public-cloud-learning-sessions-tagging-standards-for-all-hyperscalers-20240123-1", + "source_path": "wiki/sources/public-cloud-learning-sessions-tagging-standards-for-all-hyperscalers-20240123-1.md", + "ingested": true, + "ingested_at": "2026-04-19T06:19:26.461429" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/10_OpenText-Series/public-cloud-learning-sessions-opentext-product-hub-pht-overview-and-qa-20240806.md": { + "hash": "66d6c60a67679b78", + "modified": "2026-04-18T08:17:51.165074+00:00", + "slug": "public-cloud-learning-sessions-opentext-product-hub-pht-overview-and-qa-20240806", + "source_path": "wiki/sources/public-cloud-learning-sessions-opentext-product-hub-pht-overview-and-qa-20240806.md", + "ingested": true, + "ingested_at": "2026-04-19T06:35:54.744246" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/10_OpenText-Series/public-cloud-learning-sessions-applicable-business-analysis-techniques-20240109-.md": { + "hash": "abf3b08bc0ee4dbf", + "modified": "2026-04-18T08:17:51.164616+00:00", + "slug": "Public-Cloud-Learning-Sessions-Applicable-Business-Analysis-Techniques-20240109", + "source_path": "wiki/sources/Public-Cloud-Learning-Sessions-Applicable-Business-Analysis-Techniques-20240109.md", + "ingested": true, + "ingested_at": "2026-04-19T06:50:47.811137" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/10_OpenText-Series/public-cloud-learning-sessions-aws-end-user-compute-services-20240430-160120-mee.md": { + "hash": "3c77d391d827c22a", + "modified": "2026-04-18T08:17:51.164727+00:00", + "slug": "public-cloud-learning-sessions-aws-end-user-compute-services-20240430", + "source_path": "wiki/sources/public-cloud-learning-sessions-aws-end-user-compute-services-20240430.md", + "ingested": true, + "ingested_at": "2026-04-19T08:52:59.512204" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/02_IAM/learning-sessions-identity-governance-vsm-replacement-20231128-160326-meeting-re.md": { + "hash": "67d6155b8f353c6e", + "modified": "2026-04-18T08:17:51.155205+00:00", + "slug": "learning-sessions-identity-governance-vsm-replacement-20231128-160326-meeting-re", + "source_path": "wiki/sources/learning-sessions-identity-governance-vsm-replacement-20231128-160326-meeting-re.md", + "ingested": true, + "ingested_at": "2026-04-19T09:06:52.294012" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/02_IAM/ctp-topic-5-aws-identity-and-access-management-iam.md": { + "hash": "f256d8dcc384cb4b", + "modified": "2026-04-18T08:17:51.155067+00:00", + "slug": "ctp-topic-5-aws-identity-and-access-management-iam", + "source_path": "wiki/sources/ctp-topic-5-aws-identity-and-access-management-iam.md", + "ingested": true, + "ingested_at": "2026-04-19T09:21:29.635148" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/02_IAM/ctp-topic-11-ad-integration-and-login-using-ad-accounts.md": { + "hash": "dbabfc7af090bdad", + "modified": "2026-04-18T08:17:51.154997+00:00", + "slug": "ctp-topic-11-ad-integration-and-login-using-ad-accounts", + "source_path": "wiki/sources/ctp-topic-11-ad-integration-and-login-using-ad-accounts.md", + "ingested": true, + "ingested_at": "2026-04-19T09:37:55.279554" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/04_EKS/ctp-topic-8-implementation-of-cloud-monitoring-using-micro-focus-operations-brid.md": { + "hash": "2b4568677c33969f", + "modified": "2026-04-18T08:17:51.158182+00:00", + "slug": "ctp-topic-8-implementation-of-cloud-monitoring-using-micro-focus-operations-bridge", + "source_path": "wiki/sources/ctp-topic-8-implementation-of-cloud-monitoring-using-micro-focus-operations-bridge.md", + "ingested": true, + "ingested_at": "2026-04-19T09:50:07.271183" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/04_EKS/public-cloud-learning-sessions-eks-optimization-part-3-of-3-introduction-to-eks-.md": { + "hash": "efbf5de09a47c7a3", + "modified": "2026-04-18T08:17:51.158781+00:00", + "slug": "public-cloud-learning-sessions-eks-optimization-part-3-of-3-introduction-to-eks-auto-mode", + "source_path": "wiki/sources/public-cloud-learning-sessions-eks-optimization-part-3-of-3-introduction-to-eks-auto-mode.md", + "ingested": true, + "ingested_at": "2026-04-19T10:04:24.170806" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/04_EKS/ctp-topic-60-monitor-aws-using-hyperscale-observability-with-grafana.md": { + "hash": "785774067bf0988a", + "modified": "2026-04-18T08:17:51.157642+00:00", + "slug": "ctp-topic-60-monitor-aws-using-hyperscale-observability-with-grafana", + "source_path": "wiki/sources/ctp-topic-60-monitor-aws-using-hyperscale-observability-with-grafana.md", + "ingested": true, + "ingested_at": "2026-04-19T10:20:13.136360" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/04_EKS/ctp-topic-70-eks-deployment-using-iac.md": { + "hash": "a8734c5c56ce9a80", + "modified": "2026-04-18T08:17:51.158052+00:00", + "slug": "ctp-topic-70-eks-deployment-using-iac", + "source_path": "wiki/sources/ctp-topic-70-eks-deployment-using-iac.md", + "ingested": true, + "ingested_at": "2026-04-19T10:34:40.846511" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/04_EKS/public-cloud-learning-sessions-eks-optimization-part-1-of-3-compute-optimization.md": { + "hash": "c891d2db464575dc", + "modified": "2026-04-18T08:17:51.158385+00:00", + "slug": "public-cloud-learning-sessions-eks-optimization-part-1-of-3-compute-optimization", + "source_path": "wiki/sources/public-cloud-learning-sessions-eks-optimization-part-1-of-3-compute-optimization.md", + "ingested": true, + "ingested_at": "2026-04-19T11:04:21.310393" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/04_EKS/ctp-topic-39-implementing-eks-in-the-aws-lab-landing-zone.md": { + "hash": "77764f77d6ee5c6b", + "modified": "2026-04-18T08:17:51.156714+00:00", + "slug": "ctp-topic-39-implementing-eks-in-the-aws-lab-landing-zone", + "source_path": "wiki/sources/ctp-topic-39-implementing-eks-in-the-aws-lab-landing-zone.md", + "ingested": true, + "ingested_at": "2026-04-19T11:19:11.680280" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/04_EKS/ctp-topic-29-cloud-monitoring-saas-lz-accounts.md": { + "hash": "b7e09312a1e6c547", + "modified": "2026-04-18T08:17:51.156574+00:00", + "slug": "ctp-topic-29-cloud-monitoring-saas-lz-accounts", + "source_path": "wiki/sources/ctp-topic-29-cloud-monitoring-saas-lz-accounts.md", + "ingested": true, + "ingested_at": "2026-04-19T11:33:20.060017" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/04_EKS/ctp-topic-59-achieving-reliability-with-amazon-eks.md": { + "hash": "d0e3d3932e78b4bf", + "modified": "2026-04-18T08:17:51.157510+00:00", + "slug": "ctp-topic-59-achieving-reliability-with-amazon-eks", + "source_path": "wiki/sources/ctp-topic-59-achieving-reliability-with-amazon-eks.md", + "ingested": true, + "ingested_at": "2026-04-19T11:52:24.806165" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/04_EKS/ctp-topic-54-esm-saas-log-analytics.md": { + "hash": "7ec83c25c177376b", + "modified": "2026-04-18T08:17:51.157368+00:00", + "slug": "ctp-topic-54-esm-saas-log-analytics", + "source_path": "wiki/sources/ctp-topic-54-esm-saas-log-analytics.md", + "ingested": true, + "ingested_at": "2026-04-19T12:05:14.166930" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/04_EKS/public-cloud-learning-sessions-observability-with-opentelemetry-20240402-160113-.md": { + "hash": "335cdecb179abb91", + "modified": "2026-04-18T08:17:51.158916+00:00", + "slug": "public-cloud-learning-sessions-observability-with-opentelemetry-20240402-160113-", + "source_path": "wiki/sources/public-cloud-learning-sessions-observability-with-opentelemetry-20240402-160113-.md", + "ingested": true, + "ingested_at": "2026-04-19T12:35:30.714291" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/04_EKS/ctp-topic-42-grafana-observability-dashboard.md": { + "hash": "8f61570e78f9a580", + "modified": "2026-04-18T08:17:51.157038+00:00", + "slug": "ctp-topic-42-grafana-observability-dashboard", + "source_path": "wiki/sources/ctp-topic-42-grafana-observability-dashboard.md", + "ingested": true, + "ingested_at": "2026-04-19T12:49:24.166149" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/04_EKS/public-cloud-learning-sessions-eks-optimization-part-2-of-3-running-containers-w.md": { + "hash": "209a1dc2c6efb58e", + "modified": "2026-04-18T08:17:51.158642+00:00", + "slug": "public-cloud-learning-sessions-eks-optimization-part-2-of-3-running-containers-w", + "source_path": "wiki/sources/public-cloud-learning-sessions-eks-optimization-part-2-of-3-running-containers-w.md", + "ingested": true, + "ingested_at": "2026-04-19T13:33:33.581626" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/04_EKS/ctp-topic-67-cloud-native-observability-using-opentelemetry.md": { + "hash": "5997cddf576ea7e8", + "modified": "2026-04-18T08:17:51.157923+00:00", + "slug": "ctp-topic-67-cloud-native-observability-using-opentelemetry", + "source_path": "wiki/sources/ctp-topic-67-cloud-native-observability-using-opentelemetry.md", + "ingested": true, + "ingested_at": "2026-04-19T13:48:51.951630" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/04_EKS/ctp-topic-64-scaling-out-with-amazon-eks.md": { + "hash": "dcac4c1646ceb6ff", + "modified": "2026-04-18T08:17:51.157778+00:00", + "slug": "ctp-topic-64-scaling-out-with-amazon-eks", + "source_path": "wiki/sources/ctp-topic-64-scaling-out-with-amazon-eks.md", + "ingested": true, + "ingested_at": "2026-04-19T14:07:27.595676" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/07_Security/public-cloud-learning-sessions-opentext-gis-security-policies-20241015-160257-me.md": { + "hash": "c77e29fc5b1f7cdc", + "modified": "2026-04-18T08:17:51.161888+00:00", + "slug": "public-cloud-learning-sessions-opentext-gis-security-policies-20241015-160257-me", + "source_path": "wiki/sources/public-cloud-learning-sessions-opentext-gis-security-policies-20241015-160257-me.md", + "ingested": true, + "ingested_at": "2026-04-19T14:19:51.762538" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/07_Security/ctp-topic-62-aws-secrets-manager.md": { + "hash": "807703fe8d71d23d", + "modified": "2026-04-18T08:17:51.161774+00:00", + "slug": "ctp-topic-62-aws-secrets-manager", + "source_path": "wiki/sources/ctp-topic-62-aws-secrets-manager.md", + "ingested": true, + "ingested_at": "2026-04-19T14:36:18.529397" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/07_Security/ctp-topic-37-secrets-certificates-management.md": { + "hash": "0be3024971f16332", + "modified": "2026-04-18T08:17:51.161273+00:00", + "slug": "ctp-topic-37-secrets-certificates-management", + "source_path": "wiki/sources/ctp-topic-37-secrets-certificates-management.md", + "ingested": true, + "ingested_at": "2026-04-19T14:53:25.524476" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/07_Security/ctp-topic-55-aws-firewall-manager.md": { + "hash": "d99cc1209b64ea65", + "modified": "2026-04-18T08:17:51.161650+00:00", + "slug": "ctp-topic-55-aws-firewall-manager", + "source_path": "wiki/sources/ctp-topic-55-aws-firewall-manager.md", + "ingested": true, + "ingested_at": "2026-04-19T15:11:03.897070" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/07_Security/ctp-topic-52-3-lines-of-defence-3lod-framework-cloud-security-posture-management.md": { + "hash": "b0474845b22568e5", + "modified": "2026-04-18T08:17:51.161536+00:00", + "slug": "ctp-topic-52-3-lines-of-defence-3lod-framework-cloud-security-posture-management", + "source_path": "wiki/sources/ctp-topic-52-3-lines-of-defence-3lod-framework-cloud-security-posture-management.md", + "ingested": true, + "ingested_at": "2026-04-19T15:24:43.208381" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/07_Security/ctp-topic-21-supply-chain-security-in-micro-focus.md": { + "hash": "b6e20d8c92c09f80", + "modified": "2026-04-18T08:17:51.161155+00:00", + "slug": "ctp-topic-21-supply-chain-security-in-micro-focus", + "source_path": "wiki/sources/ctp-topic-21-supply-chain-security-in-micro-focus.md", + "ingested": true, + "ingested_at": "2026-04-19T15:43:24.651728" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/07_Security/ctp-topic-49-container-lifecycle-hardening-standards.md": { + "hash": "ca95d5fe4247de14", + "modified": "2026-04-18T08:17:51.161416+00:00", + "slug": "ctp-topic-49-container-lifecycle-hardening-standards", + "source_path": "wiki/sources/ctp-topic-49-container-lifecycle-hardening-standards.md", + "ingested": true, + "ingested_at": "2026-04-19T15:56:41.808103" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/07_Security/ctp-topic-24-micro-focus-product-privacy-framework.md": { + "hash": "65a35a7b98c51171", + "modified": "2026-04-18T08:17:51.161218+00:00", + "slug": "ctp-topic-24-micro-focus-product-privacy-framework", + "source_path": "wiki/sources/ctp-topic-24-micro-focus-product-privacy-framework.md", + "ingested": true, + "ingested_at": "2026-04-19T16:08:32.616238" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/06_CI_CD_GitOps/ctp-topic-2-git.md": { + "hash": "a7f5f6a9ef50f48e", + "modified": "2026-04-18T08:17:51.160141+00:00", + "slug": "ctp-topic-2-git", + "source_path": "wiki/sources/ctp-topic-2-git.md", + "ingested": true, + "ingested_at": "2026-04-19T16:25:42.308792" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/06_CI_CD_GitOps/ctp-topic-32-using-atlantis-cicd-for-infrastructure-deployments.md": { + "hash": "cdc4a8c0803ad418", + "modified": "2026-04-18T08:17:51.160335+00:00", + "slug": "ctp-topic-32-using-atlantis-cicd-for-infrastructure-deployments", + "source_path": "wiki/sources/ctp-topic-32-using-atlantis-cicd-for-infrastructure-deployments.md", + "ingested": true, + "ingested_at": "2026-04-19T17:24:03.034425" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/06_CI_CD_GitOps/ctp-topic-9-ci-cd-with-gruntwork.md": { + "hash": "90cb4d4b9aeb2609", + "modified": "2026-04-18T08:17:51.160900+00:00", + "slug": "ctp-topic-9-ci-cd-with-gruntwork", + "source_path": "wiki/sources/ctp-topic-9-ci-cd-with-gruntwork.md", + "ingested": true, + "ingested_at": "2026-04-19T17:35:33.329369" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/06_CI_CD_GitOps/ctp-topic-3-deploy-and-maintain-infrastructure.md": { + "hash": "0eb762aeb06e63ca", + "modified": "2026-04-18T08:17:51.160203+00:00", + "slug": "ctp-topic-3-deploy-and-maintain-infrastructure", + "source_path": "wiki/sources/ctp-topic-3-deploy-and-maintain-infrastructure.md", + "ingested": true, + "ingested_at": "2026-04-19T17:56:50.403152" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/06_CI_CD_GitOps/ctp-topic-33-an-introduction-to-gitops.md": { + "hash": "b272ce670ed90357", + "modified": "2026-04-18T08:17:51.160573+00:00", + "slug": "ctp-topic-33-an-introduction-to-gitops", + "source_path": "wiki/sources/ctp-topic-33-an-introduction-to-gitops.md", + "ingested": true, + "ingested_at": "2026-04-19T18:11:42.298948" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/06_CI_CD_GitOps/public-cloud-learning-sessions-ollie-workflow-and-the-demand-process-20240416-16.md": { + "hash": "ae36881ae129aafe", + "modified": "2026-04-18T08:17:51.160980+00:00", + "slug": "public-cloud-learning-sessions-ollie-workflow-and-the-demand-process-20240416", + "source_path": "wiki/sources/public-cloud-learning-sessions-ollie-workflow-and-the-demand-process-20240416.md", + "ingested": true, + "ingested_at": "2026-04-19T18:25:43.600742" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/06_CI_CD_GitOps/ctp-topic-56-automated-infrastructure-testing.md": { + "hash": "4c2277ca77a2dcfd", + "modified": "2026-04-18T08:17:51.160709+00:00", + "slug": "ctp-topic-56-automated-infrastructure-testing", + "source_path": "wiki/sources/ctp-topic-56-automated-infrastructure-testing.md", + "ingested": true, + "ingested_at": "2026-04-19T18:36:12.896100" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/06_CI_CD_GitOps/ctp-topic-15-working-with-renovatebot.md": { + "hash": "951217fe3209731b", + "modified": "2026-04-18T08:17:51.160081+00:00", + "slug": "ctp-topic-15-working-with-renovatebot", + "source_path": "wiki/sources/ctp-topic-15-working-with-renovatebot.md", + "ingested": true, + "ingested_at": "2026-04-19T19:06:44.231024" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/05_FinOps/ctp-topic-13-cloud-finops-micro-focus-policies-best-practices-to-optimize-the-co.md": { + "hash": "962f11d0e6773745", + "modified": "2026-04-18T08:17:51.159211+00:00", + "slug": "ctp-topic-13-cloud-finops-micro-focus-policies-best-practices-to-optimize-the-co", + "source_path": "wiki/sources/ctp-topic-13-cloud-finops-micro-focus-policies-best-practices-to-optimize-the-co.md", + "ingested": true, + "ingested_at": "2026-04-19T19:23:55.958204" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/05_FinOps/public-cloud-learning-sessions-reducing-cloud-costs-20250318-170100-meeting-reco.md": { + "hash": "c2c2e13eeceb057e", + "modified": "2026-04-18T08:17:51.159781+00:00", + "slug": "public-cloud-learning-sessions-reducing-cloud-costs-20250318-170100-meeting-reco", + "source_path": "wiki/sources/public-cloud-learning-sessions-reducing-cloud-costs-20250318-170100-meeting-reco.md", + "ingested": true, + "ingested_at": "2026-04-19T19:44:26.559815" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/05_FinOps/public-cloud-learning-sessions-best-practices-for-ec2-cost-optimization-in-aws-2.md": { + "hash": "4f14cdc4fe23b217", + "modified": "2026-04-18T08:17:51.159493+00:00", + "slug": "public-cloud-learning-sessions-best-practices-for-ec2-cost-optimization-in-aws-2", + "source_path": "wiki/sources/public-cloud-learning-sessions-best-practices-for-ec2-cost-optimization-in-aws-2.md", + "ingested": true, + "ingested_at": "2026-04-19T19:54:07.204382" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/05_FinOps/ctp-topic-71-pcgs-guide-to-rightsizing-why-how-when.md": { + "hash": "3c4f8d4ae0d2029c", + "modified": "2026-04-18T08:17:51.159425+00:00", + "slug": "ctp-topic-71-pcgs-guide-to-rightsizing-why-how-when", + "source_path": "wiki/sources/ctp-topic-71-pcgs-guide-to-rightsizing-why-how-when.md", + "ingested": true, + "ingested_at": "2026-04-19T20:08:00.675475" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/05_FinOps/public-cloud-learning-sessions-storage-cost-optimization-20240305-160037-meeting.md": { + "hash": "f37c6d5723176a70", + "modified": "2026-04-18T08:17:51.159918+00:00", + "slug": "public-cloud-learning-sessions-storage-cost-optimization-20240305", + "source_path": "wiki/sources/public-cloud-learning-sessions-storage-cost-optimization-20240305.md", + "ingested": true, + "ingested_at": "2026-04-19T20:26:41.687189" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/05_FinOps/ctp-topic-63-optimise-resource-cost-using-automation.md": { + "hash": "af94ba41d0de53f4", + "modified": "2026-04-18T08:17:51.159355+00:00", + "slug": "ctp-topic-63-optimise-resource-cost-using-automation", + "source_path": "wiki/sources/ctp-topic-63-optimise-resource-cost-using-automation.md", + "ingested": true, + "ingested_at": "2026-04-19T20:38:16.679865" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/05_FinOps/public-cloud-learning-sessions-budget-control-20240319-160204-meeting-recording.md": { + "hash": "75e2d04ce8ce7f52", + "modified": "2026-04-18T08:17:51.159651+00:00", + "slug": "Public-Cloud-Learning-Sessions-Budget-Control", + "source_path": "wiki/sources/Public-Cloud-Learning-Sessions-Budget-Control.md", + "ingested": true, + "ingested_at": "2026-04-19T20:53:10.558004" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/05_FinOps/ctp-topic-27-aws-instance-scheduler.md": { + "hash": "e9d660c09ad28c13", + "modified": "2026-04-18T08:17:51.159288+00:00", + "slug": "ctp-topic-27-aws-instance-scheduler", + "source_path": "wiki/sources/ctp-topic-27-aws-instance-scheduler.md", + "ingested": true, + "ingested_at": "2026-04-19T21:11:41.773318" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/_Index/cloud-learning-master-index.md": { + "hash": "a5fac1d62bf8d390", + "modified": "2026-04-18T08:17:51.165573+00:00", + "slug": "cloud-learning-master-index", + "source_path": "wiki/sources/cloud-learning-master-index.md", + "ingested": true, + "ingested_at": "2026-04-19T21:22:04.402077" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/09_Serverless_AI/public-cloud-learning-sessions-introduction-to-artificial-intelligence-ai-machin.md": { + "hash": "e63b024ad0e2c48b", + "modified": "2026-04-18T08:17:51.162994+00:00", + "slug": "public-cloud-learning-sessions-introduction-to-artificial-intelligence-ai-machine-learning-20240206", + "source_path": "wiki/sources/public-cloud-learning-sessions-introduction-to-artificial-intelligence-ai-machine-learning-20240206.md", + "ingested": true, + "ingested_at": "2026-04-19T21:42:37.159885" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/09_Serverless_AI/public-cloud-learning-sessions-opentext-serverless-computing-20240903-160139-mee.md": { + "hash": "af9be8adde945c45", + "modified": "2026-04-18T08:17:51.163588+00:00", + "slug": "Public-Cloud-Learning-Sessions-OpenText-Serverless-Computing-20240903", + "source_path": "wiki/sources/Public-Cloud-Learning-Sessions-OpenText-Serverless-Computing-20240903.md", + "ingested": true, + "ingested_at": "2026-04-19T22:18:36.937741" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/09_Serverless_AI/public-cloud-learning-sessions-opentext-event-driven-architecture-part-1-2024091.md": { + "hash": "486d5087d2c796bd", + "modified": "2026-04-18T08:17:51.163292+00:00", + "slug": "public-cloud-learning-sessions-opentext-event-driven-architecture-part-1-2024091.md", + "source_path": "wiki/sources/public-cloud-learning-sessions-opentext-event-driven-architecture-part-1-2024091.md", + "ingested": true, + "ingested_at": "2026-04-19T22:45:16.288750" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/09_Serverless_AI/public-cloud-learning-sessions-opentext-generative-ai-prompt-engineering-2024111.md": { + "hash": "ec22bf27835e5530", + "modified": "2026-04-18T08:17:51.163470+00:00", + "slug": "public-cloud-learning-sessions-opentext-generative-ai-prompt-engineering-20241112", + "source_path": "wiki/sources/public-cloud-learning-sessions-opentext-generative-ai-prompt-engineering-20241112.md", + "ingested": true, + "ingested_at": "2026-04-19T23:10:09.678601" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/09_Serverless_AI/public-cloud-learning-sessions-opentext-event-driven-architecture-part-2-2024091.md": { + "hash": "b93660124589c2fb", + "modified": "2026-04-18T08:17:51.163358+00:00", + "slug": "public-cloud-learning-sessions-opentext-event-driven-architecture-part-2-2024091", + "source_path": "wiki/sources/public-cloud-learning-sessions-opentext-event-driven-architecture-part-2-2024091.md", + "ingested": true, + "ingested_at": "2026-04-19T23:20:45.999981" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/09_Serverless_AI/public-cloud-learning-sessions-opentext-ai-use-cases-20241126-160106-meeting-rec.md": { + "hash": "2ff721fa8681b796", + "modified": "2026-04-18T08:17:51.163181+00:00", + "slug": "public-cloud-learning-sessions-opentext-ai-use-cases-20241126", + "source_path": "wiki/sources/public-cloud-learning-sessions-opentext-ai-use-cases-20241126.md", + "ingested": true, + "ingested_at": "2026-04-19T23:35:43.996794" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/03_Terraform/ctp-topic-48-terraform-vs-terragrunt.md": { + "hash": "a2abd9470dc93ab8", + "modified": "2026-04-18T08:17:51.155654+00:00", + "slug": "ctp-topic-48-terraform-vs-terragrunt", + "source_path": "wiki/sources/ctp-topic-48-terraform-vs-terragrunt.md", + "ingested": true, + "ingested_at": "2026-04-19T23:50:51.450212" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/03_Terraform/learning-sessions-ecs-deployment-using-iac-20230808-183322-meeting-recording.md": { + "hash": "f324313ffeb2daf2", + "modified": "2026-04-18T08:17:51.156388+00:00", + "slug": "learning-sessions-ecs-deployment-using-iac-20230808-183322-meeting-recording", + "source_path": "wiki/sources/learning-sessions-ecs-deployment-using-iac-20230808-183322-meeting-recording.md", + "ingested": true, + "ingested_at": "2026-04-20T00:15:34.937296" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/03_Terraform/ctp-topic-16-cross-account-terraform-modules.md": { + "hash": "2ff744db23382542", + "modified": "2026-04-18T08:17:51.155588+00:00", + "slug": "ctp-topic-16-cross-account-terraform-modules", + "source_path": "wiki/sources/ctp-topic-16-cross-account-terraform-modules.md", + "ingested": true, + "ingested_at": "2026-04-20T00:34:58.740288" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/03_Terraform/learning-sessions-cloud-transformation-programme-20230808-183322-meeting-recordi.md": { + "hash": "fe096d700ba4edd2", + "modified": "2026-04-18T08:17:51.155791+00:00", + "slug": "learning-sessions-cloud-transformation-programme-20230808-183322-meeting-recording", + "source_path": "wiki/sources/learning-sessions-cloud-transformation-programme-20230808-183322-meeting-recording.md", + "ingested": true, + "ingested_at": "2026-04-20T00:49:06.023918" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/03_Terraform/learning-sessions-cloud-transformation-programme-deploying-rds-via-terraform.md": { + "hash": "765d5a3b8a7731b0", + "modified": "2026-04-18T08:17:51.156024+00:00", + "slug": "Learning-Sessions-Cloud-Transformation-Programme-Deploying-RDS-via-Terraform", + "source_path": "wiki/sources/Learning-Sessions-Cloud-Transformation-Programme-Deploying-RDS-via-Terraform.md", + "ingested": true, + "ingested_at": "2026-04-20T01:10:10.141689" + }, + "raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/03_Terraform/ctp-topic-12-using-ses-smtp-service-terraform-module.md": { + "hash": "c5f605b6243f9763", + "modified": "2026-04-18T08:17:51.155514+00:00", + "slug": "ctp-topic-12-using-ses-smtp-service-terraform-module", + "source_path": "wiki/sources/ctp-topic-12-using-ses-smtp-service-terraform-module.md", + "ingested": true, + "ingested_at": "2026-04-20T01:21:30.431279" + }, + "raw/Agent/agency-agents/CONTRIBUTING_zh-CN.md": { + "hash": "e16fcef34292c79f", + "modified": "2026-03-29T11:45:15.979469+00:00", + "slug": "contributing-zh-cn", + "source_path": "wiki/sources/contributing-zh-cn.md", + "ingested": true, + "ingested_at": "2026-04-20T01:36:22.739949" + }, + "raw/Agent/agency-agents/README.md": { + "hash": "a6a4162937f9eabf", + "modified": "2026-04-20T13:31:38.742536+00:00", + "slug": "agency-agents-readme", + "source_path": "wiki/sources/agency-agents-readme.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/CONTRIBUTING.md": { + "hash": "84f13b5a5e1d2d06", + "modified": "2026-04-20T13:31:38.680372+00:00", + "slug": "the-agency-contributing", + "source_path": "wiki/sources/the-agency-contributing.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/design/design-ux-architect.md": { + "hash": "151f7386682b77a6", + "modified": "2026-03-29T11:45:15.981416+00:00", + "slug": "design-ux-architect", + "source_path": "wiki/sources/design-ux-architect.md", + "ingested": true, + "ingested_at": "2026-04-20T02:22:13.464049" + }, + "raw/Agent/agency-agents/design/design-whimsy-injector.md": { + "hash": "d517c959118a25ce", + "modified": "2026-03-29T11:45:15.981913+00:00", + "slug": "design-whimsy-injector", + "source_path": "wiki/sources/design-whimsy-injector.md", + "ingested": true, + "ingested_at": "2026-04-20T02:36:32.819961" + }, + "raw/Agent/agency-agents/design/design-ux-researcher.md": { + "hash": "25f59c4333df2d0f", + "modified": "2026-03-29T11:45:15.981619+00:00", + "slug": "design-ux-researcher", + "source_path": "wiki/sources/design-ux-researcher.md", + "ingested": true, + "ingested_at": "2026-04-20T03:12:45.206326" + }, + "raw/Agent/agency-agents/design/design-brand-guardian.md": { + "hash": "d1d5c78af85d4d35", + "modified": "2026-03-29T11:45:15.980840+00:00", + "slug": "design-brand-guardian", + "source_path": "wiki/sources/design-brand-guardian.md", + "ingested": true, + "ingested_at": "2026-04-20T03:16:18.857905" + }, + "raw/Agent/agency-agents/design/design-ui-designer.md": { + "hash": "3130768958d3b3d3", + "modified": "2026-03-29T11:45:15.981300+00:00", + "slug": "design-ui-designer", + "source_path": "wiki/sources/design-ui-designer.md", + "ingested": true, + "ingested_at": "2026-04-20T03:19:47.234124" + }, + "raw/Agent/agency-agents/design/design-image-prompt-engineer.md": { + "hash": "63a564d01dc5812c", + "modified": "2026-03-29T11:45:15.980978+00:00", + "slug": "design-image-prompt-engineer", + "source_path": "wiki/sources/design-image-prompt-engineer.md", + "ingested": true, + "ingested_at": "2026-04-20T03:49:28.297429" + }, + "raw/Agent/agency-agents/design/design-inclusive-visuals-specialist.md": { + "hash": "b1c535f1b18bc648", + "modified": "2026-03-29T11:45:15.981083+00:00", + "slug": "design-inclusive-visuals-specialist", + "source_path": "wiki/sources/design-inclusive-visuals-specialist.md", + "ingested": true, + "ingested_at": "2026-04-20T04:06:12.827285" + }, + "raw/Agent/agency-agents/design/design-visual-storyteller.md": { + "hash": "f4950c9d65b5d105", + "modified": "2026-03-29T11:45:15.981712+00:00", + "slug": "design-visual-storyteller", + "source_path": "wiki/sources/design-visual-storyteller.md", + "ingested": true, + "ingested_at": "2026-04-20T04:19:11.135342" + }, + "raw/Agent/agency-agents/paid-media/paid-media-programmatic-buyer.md": { + "hash": "36c35a23457a6350", + "modified": "2026-03-29T11:45:15.994932+00:00", + "slug": "paid-media-programmatic-buyer", + "source_path": "wiki/sources/paid-media-programmatic-buyer.md", + "ingested": true, + "ingested_at": "2026-04-20T04:37:44.772519" + }, + "raw/Agent/agency-agents/paid-media/paid-media-ppc-strategist.md": { + "hash": "832d7c5738e37c64", + "modified": "2026-03-29T11:45:15.994739+00:00", + "slug": "paid-media-ppc-strategist", + "source_path": "wiki/sources/paid-media-ppc-strategist.md", + "ingested": true, + "ingested_at": "2026-04-20T04:53:20.378377" + }, + "raw/Agent/agency-agents/paid-media/paid-media-auditor.md": { + "hash": "f69cc71d1485fa34", + "modified": "2026-03-29T11:45:15.994427+00:00", + "slug": "paid-media-auditor", + "source_path": "wiki/sources/paid-media-auditor.md", + "ingested": true, + "ingested_at": "2026-04-20T05:07:08.744438" + }, + "raw/Agent/agency-agents/paid-media/paid-media-search-query-analyst.md": { + "hash": "fb4ef9ea24d500ff", + "modified": "2026-03-29T11:45:15.995020+00:00", + "slug": "search-query-analyst", + "source_path": "wiki/sources/search-query-analyst.md", + "ingested": true, + "ingested_at": "2026-04-20T05:20:28.679751" + }, + "raw/Agent/agency-agents/paid-media/paid-media-paid-social-strategist.md": { + "hash": "b87c387702883532", + "modified": "2026-03-29T11:45:15.994640+00:00", + "slug": "paid-media-paid-social-strategist", + "source_path": "wiki/sources/paid-media-paid-social-strategist.md", + "ingested": true, + "ingested_at": "2026-04-20T12:00:00.000000+00:00" + }, + "raw/Agent/agency-agents/paid-media/paid-media-creative-strategist.md": { + "hash": "c87bda47c8316e3a", + "modified": "2026-03-29T11:45:15.994537+00:00", + "slug": "paid-media-creative-strategist", + "source_path": "wiki/sources/paid-media-creative-strategist.md", + "ingested": true, + "ingested_at": "2026-04-20T05:49:30.542788" + }, + "raw/Agent/agency-agents/paid-media/paid-media-tracking-specialist.md": { + "hash": "f31230e1e6d82128", + "modified": "2026-03-29T11:45:15.995094+00:00", + "slug": "paid-media-tracking-specialist", + "source_path": "wiki/sources/paid-media-tracking-specialist.md", + "ingested": true, + "ingested_at": "2026-04-20T06:07:11.622355" + }, + "raw/Agent/agency-agents/sales/sales-discovery-coach.md": { + "hash": "8244a25e5b878505", + "modified": "2026-03-29T11:45:15.996666+00:00", + "slug": "sales-discovery-coach", + "source_path": "wiki/sources/sales-discovery-coach.md", + "ingested": true, + "ingested_at": "2026-04-20T06:37:41.338594" + }, + "raw/Agent/agency-agents/sales/sales-coach.md": { + "hash": "83f0be3daa7e78b2", + "modified": "2026-03-29T11:45:15.996472+00:00", + "slug": "sales-coach", + "source_path": "wiki/sources/sales-coach.md", + "ingested": true, + "ingested_at": "2026-04-20T06:50:06.524163" + }, + "raw/Agent/agency-agents/sales/sales-proposal-strategist.md": { + "hash": "84c42e0ae7e11e6b", + "modified": "2026-03-29T11:45:15.997157+00:00", + "slug": "sales-proposal-strategist", + "source_path": "wiki/sources/sales-proposal-strategist.md", + "ingested": true, + "ingested_at": "2026-04-20T07:06:46.595723" + }, + "raw/Agent/agency-agents/sales/sales-account-strategist.md": { + "hash": "dd9b2c37c4182728", + "modified": "2026-03-29T11:45:15.996372+00:00", + "slug": "sales-account-strategist", + "source_path": "wiki/sources/sales-account-strategist.md", + "ingested": true, + "ingested_at": "2026-04-20T07:19:01.678082" + }, + "raw/Agent/agency-agents/sales/sales-deal-strategist.md": { + "hash": "fdd92f2ced04ad84", + "modified": "2026-03-29T11:45:15.996565+00:00", + "slug": "sales-deal-strategist", + "source_path": "wiki/sources/sales-deal-strategist.md", + "ingested": true, + "ingested_at": "2026-04-20T07:38:50.825885" + }, + "raw/Agent/agency-agents/sales/sales-outbound-strategist.md": { + "hash": "4f6c8abf9c936fbe", + "modified": "2026-03-29T11:45:15.996953+00:00", + "slug": "sales-outbound-strategist", + "source_path": "wiki/sources/sales-outbound-strategist.md", + "ingested": true, + "ingested_at": "2026-04-20T07:52:19.821727" + }, + "raw/Agent/agency-agents/sales/sales-pipeline-analyst.md": { + "hash": "d105ed717423298d", + "modified": "2026-03-29T11:45:15.997060+00:00", + "slug": "sales-pipeline-analyst", + "source_path": "wiki/sources/sales-pipeline-analyst.md", + "ingested": true, + "ingested_at": "2026-04-20T08:04:43.563167" + }, + "raw/Agent/agency-agents/sales/sales-engineer.md": { + "hash": "355014b3ecf52aaa", + "modified": "2026-03-29T11:45:15.996844+00:00", + "slug": "sales-engineer", + "source_path": "wiki/sources/sales-engineer.md", + "ingested": true, + "ingested_at": "2026-04-20T08:21:04.220856" + }, + "raw/Agent/agency-agents/spatial-computing/xr-cockpit-interaction-specialist.md": { + "hash": "c8473bd555ad22da", + "modified": "2026-03-29T11:45:15.997840+00:00", + "slug": "xr-cockpit-interaction-specialist", + "source_path": "wiki/sources/xr-cockpit-interaction-specialist.md", + "ingested": true, + "ingested_at": "2026-04-20T08:34:28.730939" + }, + "raw/Agent/agency-agents/spatial-computing/xr-immersive-developer.md": { + "hash": "a9aa13187bfb774f", + "modified": "2026-03-29T11:45:15.997902+00:00", + "slug": "xr-immersive-developer", + "source_path": "wiki/sources/xr-immersive-developer.md", + "ingested": true, + "ingested_at": "2026-04-20T08:53:11.398079" + }, + "raw/Agent/agency-agents/spatial-computing/terminal-integration-specialist.md": { + "hash": "f6033fc95d538112", + "modified": "2026-03-29T11:45:15.997713+00:00", + "slug": "terminal-integration-specialist", + "source_path": "wiki/sources/terminal-integration-specialist.md", + "ingested": true, + "ingested_at": "2026-04-20T09:19:14.002237" + }, + "raw/Agent/agency-agents/spatial-computing/macos-spatial-metal-engineer.md": { + "hash": "b0bdd78da0cdbd1e", + "modified": "2026-03-29T11:45:15.997640+00:00", + "slug": "macos-spatial-metal-engineer", + "source_path": "wiki/sources/macos-spatial-metal-engineer.md", + "ingested": true, + "ingested_at": "2026-04-20T09:35:46.038198" + }, + "raw/Agent/agency-agents/spatial-computing/xr-interface-architect.md": { + "hash": "995b459992ab4216", + "modified": "2026-03-29T11:45:15.997985+00:00", + "slug": "xr-interface-architect", + "source_path": "wiki/sources/xr-interface-architect.md", + "ingested": true, + "ingested_at": "2026-04-20T09:58:24.546361" + }, + "raw/Agent/agency-agents/spatial-computing/visionos-spatial-engineer.md": { + "hash": "9cc9a9440cdeabdb", + "modified": "2026-03-29T11:45:15.997775+00:00", + "slug": "visionos-spatial-engineer", + "source_path": "wiki/sources/visionos-spatial-engineer.md", + "ingested": true, + "ingested_at": "2026-04-20T10:18:45.853078" + }, + "raw/Agent/agency-agents/project-management/project-management-studio-producer.md": { + "hash": "d942feab0f50ea7b", + "modified": "2026-03-29T11:45:15.996171+00:00", + "slug": "studio-producer", + "source_path": "wiki/sources/studio-producer.md", + "ingested": true, + "ingested_at": "2026-04-20T10:36:29.055093" + }, + "raw/Agent/agency-agents/project-management/project-management-project-shepherd.md": { + "hash": "0feb647366d78b61", + "modified": "2026-03-29T11:45:15.995974+00:00", + "slug": "project-management-project-shepherd", + "source_path": "wiki/sources/project-management-project-shepherd.md", + "ingested": true, + "ingested_at": "2026-04-20T10:54:07.176605" + }, + "raw/Agent/agency-agents/project-management/project-management-jira-workflow-steward.md": { + "hash": "e45c68423c1df0c2", + "modified": "2026-03-29T11:45:15.995861+00:00", + "slug": "project-management-jira-workflow-steward", + "source_path": "wiki/sources/project-management-jira-workflow-steward.md", + "ingested": true, + "ingested_at": "2026-04-20T11:20:28.092341" + }, + "raw/Agent/agency-agents/project-management/project-manager-senior.md": { + "hash": "70fb27cab174c973", + "modified": "2026-03-29T11:45:15.996249+00:00", + "slug": "project-manager-senior", + "source_path": "wiki/sources/project-manager-senior.md", + "ingested": true, + "ingested_at": "2026-04-20T11:35:43.396698" + }, + "raw/Agent/agency-agents/project-management/project-management-studio-operations.md": { + "hash": "8a2e5098d94688d1", + "modified": "2026-03-29T11:45:15.996077+00:00", + "slug": "project-management-studio-operations", + "source_path": "wiki/sources/project-management-studio-operations.md", + "ingested": true, + "ingested_at": "2026-04-20T03:49:32Z" + }, + "raw/Agent/agency-agents/project-management/project-management-experiment-tracker.md": { + "hash": "8f1410bfa054c8ac", + "modified": "2026-03-29T11:45:15.995762+00:00", + "slug": "project-management-experiment-tracker", + "source_path": "wiki/sources/project-management-experiment-tracker.md", + "ingested": true, + "ingested_at": "2026-04-20T12:05:38.186429" + }, + "raw/Agent/agency-agents/specialized/specialized-civil-engineer.md": { + "hash": "37c9c37511345799", + "modified": "2026-03-29T11:45:15.999547+00:00", + "slug": "specialized-civil-engineer", + "source_path": "wiki/sources/specialized-civil-engineer.md", + "ingested": true, + "ingested_at": "2026-04-20T12:15:25+08:00" + }, + "raw/Agent/agency-agents/specialized/recruitment-specialist.md": { + "hash": "fa1349988c278d0e", + "modified": "2026-03-29T11:45:15.999298+00:00", + "slug": "recruitment-specialist", + "source_path": "wiki/sources/recruitment-specialist.md", + "ingested": true, + "ingested_at": "2026-04-20T04:34:45Z" + }, + "raw/Agent/agency-agents/specialized/accounts-payable-agent.md": { + "hash": "3b943d48884c7ef1", + "modified": "2026-03-29T11:45:15.998123+00:00", + "slug": "accounts-payable-agent", + "source_path": "wiki/sources/accounts-payable-agent.md", + "ingested": true, + "ingested_at": "2026-04-20T04:52:59.947132+00:00" + }, + "raw/Agent/agency-agents/specialized/identity-graph-operator.md": { + "hash": "f37b705283147e3b", + "modified": "2026-03-29T11:45:15.999094+00:00", + "slug": "identity-graph-operator", + "source_path": "wiki/sources/identity-graph-operator.md", + "ingested": true, + "ingested_at": "2026-04-20T05:08:29.660741+00:00" + }, + "raw/Agent/agency-agents/specialized/specialized-document-generator.md": { + "hash": "cd2ca961e0f7baa1", + "modified": "2026-03-29T11:45:15.999808+00:00", + "slug": "specialized-document-generator", + "source_path": "wiki/sources/specialized-document-generator.md", + "ingested": true, + "ingested_at": "2026-04-20T05:51:13.396359+00:00" + }, + "raw/Agent/agency-agents/specialized/agentic-identity-trust.md": { + "hash": "55de131a5c790dfb", + "modified": "2026-03-29T11:45:15.998246+00:00", + "slug": "agentic-identity-trust", + "source_path": "wiki/sources/agentic-identity-trust.md", + "ingested": true, + "ingested_at": "2026-04-20T06:04:56.616798+00:00" + }, + "raw/Agent/agency-agents/specialized/government-digital-presales-consultant.md": { + "hash": "0676fd83a4628289", + "modified": "2026-03-29T11:45:15.998870+00:00", + "slug": "government-digital-presales-consultant", + "source_path": "wiki/sources/government-digital-presales-consultant.md", + "ingested": true, + "ingested_at": "2026-04-20T06:21:25.942576+00:00" + }, + "raw/Agent/agency-agents/specialized/specialized-workflow-architect.md": { + "hash": "ab907eef380fdba8", + "modified": "2026-03-29T11:45:16.000424+00:00", + "slug": "specialized-workflow-architect", + "source_path": "wiki/sources/specialized-workflow-architect.md", + "ingested": true, + "ingested_at": "2026-04-20T06:38:21.641619+00:00" + }, + "raw/Agent/agency-agents/specialized/healthcare-marketing-compliance.md": { + "hash": "942cc3b43da5f0e6", + "modified": "2026-03-29T11:45:15.998989+00:00", + "slug": "healthcare-marketing-compliance", + "source_path": "wiki/sources/healthcare-marketing-compliance.md", + "ingested": true, + "ingested_at": "2026-04-20T07:04:57.160007+00:00" + }, + "raw/Agent/agency-agents/specialized/specialized-cultural-intelligence-strategist.md": { + "hash": "91f1d2ef19bcf05f", + "modified": "2026-03-29T11:45:15.999632+00:00", + "slug": "specialized-cultural-intelligence-strategist", + "source_path": "wiki/sources/specialized-cultural-intelligence-strategist.md", + "ingested": true, + "ingested_at": "2026-04-20T07:26:33.450313+00:00" + }, + "raw/Agent/agency-agents/specialized/corporate-training-designer.md": { + "hash": "e70733229e87dde0", + "modified": "2026-03-29T11:45:15.998702+00:00", + "slug": "corporate-training-designer", + "source_path": "wiki/sources/corporate-training-designer.md", + "ingested": true, + "ingested_at": "2026-04-20T15:53:30.149594" + }, + "raw/Agent/agency-agents/specialized/specialized-model-qa.md": { + "hash": "835a26b93003cfb8", + "modified": "2026-03-29T11:45:16.000216+00:00", + "slug": "model-qa-specialist", + "source_path": "wiki/sources/model-qa-specialist.md", + "ingested": true, + "ingested_at": "2026-04-20T08:06:36.963871+00:00" + }, + "raw/Agent/agency-agents/specialized/lsp-index-engineer.md": { + "hash": "3f720a81cdcdaa63", + "modified": "2026-03-29T11:45:15.999196+00:00", + "slug": "lsp-index-engineer", + "source_path": "wiki/sources/lsp-index-engineer.md", + "ingested": true, + "ingested_at": "2026-04-20T16:15:00+00:00" + }, + "raw/Agent/agency-agents/specialized/specialized-salesforce-architect.md": { + "hash": "0c53f86382134c21", + "modified": "2026-03-29T11:16:00.000324+00:00", + "slug": "specialized-salesforce-architect", + "source_path": "wiki/sources/specialized-salesforce-architect.md", + "ingested": true, + "ingested_at": "2026-04-20T16:42:00.000000+00:00" + }, + "raw/Agent/agency-agents/specialized/compliance-auditor.md": { + "hash": "ebb550ceef8011be", + "modified": "2026-03-29T11:45:15.998615+00:00", + "slug": "compliance-auditor", + "source_path": "wiki/sources/compliance-auditor.md", + "ingested": true, + "ingested_at": "2026-04-20T16:45:00+00:00" + }, + "raw/Agent/agency-agents/specialized/specialized-mcp-builder.md": { + "hash": "3880031674ae2458", + "modified": "2026-03-29T11:45:16.000111+00:00", + "slug": "specialized-mcp-builder", + "source_path": "wiki/sources/specialized-mcp-builder.md", + "ingested": true, + "ingested_at": "2026-04-20T17:11:54.562458" + }, + "raw/Agent/agency-agents/specialized/agents-orchestrator.md": { + "hash": "3f900ee286eba5a8", + "modified": "2026-03-29T11:45:15.998357+00:00", + "slug": "agents-orchestrator", + "source_path": "wiki/sources/agents-orchestrator.md", + "ingested": true, + "ingested_at": "2026-04-20T18:30:00.000000+00:00" + }, + "raw/Agent/agency-agents/specialized/study-abroad-advisor.md": { + "hash": "afd4b1033e76671b", + "modified": "2026-03-29T11:45:16.000521+00:00", + "slug": "study-abroad-advisor", + "source_path": "wiki/sources/study-abroad-advisor.md", + "ingested": true, + "ingested_at": "2026-04-20T18:21:11.769043" + }, + "raw/Agent/agency-agents/specialized/sales-data-extraction-agent.md": { + "hash": "202a6f04df452385", + "modified": "2026-03-29T11:45:15.999447+00:00", + "slug": "sales-data-extraction-agent", + "source_path": "wiki/sources/sales-data-extraction-agent.md", + "ingested": true, + "ingested_at": "2026-04-20T18:34:33.594144" + }, + "raw/Agent/agency-agents/specialized/blockchain-security-auditor.md": { + "hash": "b35bcd083889ccea", + "modified": "2026-03-29T11:45:15.998535+00:00", + "slug": "blockchain-security-auditor", + "source_path": "wiki/sources/blockchain-security-auditor.md", + "ingested": true, + "ingested_at": "2026-04-20T18:52:09.967152" + }, + "raw/Agent/agency-agents/specialized/specialized-french-consulting-market.md": { + "hash": "4ce5acf38babd2b0", + "modified": "2026-03-29T11:45:15.999915+00:00", + "slug": "French-Consulting-Market-Navigator", + "source_path": "wiki/sources/French-Consulting-Market-Navigator.md", + "ingested": true, + "ingested_at": "2026-04-20T19:05:51.809121" + }, + "raw/Agent/agency-agents/specialized/specialized-korean-business-navigator.md": { + "hash": "71eb41ef3705fe15", + "modified": "2026-03-29T11:45:16.000009+00:00", + "slug": "specialized-korean-business-navigator", + "source_path": "wiki/sources/specialized-korean-business-navigator.md", + "ingested": true, + "ingested_at": "2026-04-20T19:20:46.173583" + }, + "raw/Agent/agency-agents/specialized/zk-steward.md": { + "hash": "b52f6a6129d5cfdd", + "modified": "2026-03-29T11:45:16.000770+00:00", + "slug": "zk-steward", + "source_path": "wiki/sources/zk-steward.md", + "ingested": true, + "ingested_at": "2026-04-19T07:45:51.848668" + }, + "raw/Agent/agency-agents/specialized/supply-chain-strategist.md": { + "hash": "4e3c93bcfefd72b9", + "modified": "2026-03-29T11:45:16.000645+00:00", + "slug": "supply-chain-strategist", + "source_path": "wiki/sources/supply-chain-strategist.md", + "ingested": true, + "ingested_at": "2026-04-20T19:34:32.191422" + }, + "raw/Agent/agency-agents/specialized/data-consolidation-agent.md": { + "hash": "7e7de097ff27e3aa", + "modified": "2026-03-29T11:45:15.998765+00:00", + "slug": "data-consolidation-agent", + "source_path": "wiki/sources/data-consolidation-agent.md", + "ingested": true, + "ingested_at": "2026-04-20T19:50:00" + }, + "raw/Agent/agency-agents/specialized/report-distribution-agent.md": { + "hash": "f5796b3cb693123e", + "modified": "2026-03-29T11:45:15.999374+00:00", + "slug": "report-distribution-agent", + "source_path": "wiki/sources/report-distribution-agent.md", + "ingested": true, + "ingested_at": "2026-04-20T20:05:40.053685" + }, + "raw/Agent/agency-agents/specialized/automation-governance-architect.md": { + "hash": "8aab89104fec352f", + "modified": "2026-03-29T11:45:15.998433+00:00", + "slug": "automation-governance-architect", + "source_path": "wiki/sources/automation-governance-architect.md", + "ingested": true, + "ingested_at": "2026-04-20T11:46:06.262211+00:00" + }, + "raw/Agent/agency-agents/specialized/specialized-developer-advocate.md": { + "hash": "92617477989c99f5", + "modified": "2026-03-29T11:45:15.999736+00:00", + "slug": "specialized-developer-advocate", + "source_path": "wiki/sources/specialized-developer-advocate.md", + "ingested": true, + "ingested_at": "2026-04-20T20:34:04.389778" + }, + "raw/Agent/agency-agents/product/product-feedback-synthesizer.md": { + "hash": "7db6770a51c396a7", + "modified": "2026-03-29T11:45:15.995282+00:00", + "slug": "product-feedback-synthesizer", + "source_path": "wiki/sources/product-feedback-synthesizer.md", + "ingested": true, + "ingested_at": "2026-04-20T20:52:21.583693" + }, + "raw/Agent/agency-agents/product/product-manager.md": { + "hash": "4a3fe4661e72e517", + "modified": "2026-03-29T11:45:15.995387+00:00", + "slug": "product-manager", + "source_path": "wiki/sources/product-manager.md", + "ingested": true, + "ingested_at": "2026-04-20T21:08:36.231402" + }, + "raw/Agent/agency-agents/product/product-trend-researcher.md": { + "hash": "4adef8e84b1a8a1c", + "modified": "2026-03-29T11:45:15.995603+00:00", + "slug": "product-trend-researcher", + "source_path": "wiki/sources/product-trend-researcher.md", + "ingested": true, + "ingested_at": "2026-04-20T21:21:29.798450" + }, + "raw/Agent/agency-agents/product/product-sprint-prioritizer.md": { + "hash": "da5233770ca85a39", + "modified": "2026-03-29T11:45:15.995492+00:00", + "slug": "product-sprint-prioritizer", + "source_path": "wiki/sources/product-sprint-prioritizer.md", + "ingested": true, + "ingested_at": "2026-04-20T21:34:57.180386" + }, + "raw/Agent/agency-agents/product/product-behavioral-nudge-engine.md": { + "hash": "61f8a4a6a502ac02", + "modified": "2026-03-29T11:45:15.995207+00:00", + "slug": "product-behavioral-nudge-engine", + "source_path": "wiki/sources/product-behavioral-nudge-engine.md", + "ingested": true, + "ingested_at": "2026-04-20T22:20:40.013834" + }, + "raw/Agent/agency-agents/academic/academic-psychologist.md": { + "hash": "193b7dba6d04346d", + "modified": "2026-03-29T11:45:15.980561+00:00", + "slug": "academic-psychologist", + "source_path": "wiki/sources/academic-psychologist.md", + "ingested": true, + "ingested_at": "2026-04-20T22:37:37.399707" + }, + "raw/Agent/agency-agents/academic/academic-anthropologist.md": { + "hash": "2668602164abf574", + "modified": "2026-03-29T11:45:15.980146+00:00", + "slug": "academic-anthropologist", + "source_path": "wiki/sources/academic-anthropologist.md", + "ingested": true, + "ingested_at": "2026-04-20T22:53:44.677422" + }, + "raw/Agent/agency-agents/academic/academic-narratologist.md": { + "hash": "12d7a6fa6134c014", + "modified": "2026-03-29T11:45:15.980464+00:00", + "slug": "academic-narratologist", + "source_path": "wiki/sources/academic-narratologist.md", + "ingested": true, + "ingested_at": "2026-04-20T23:06:20.263605" + }, + "raw/Agent/agency-agents/academic/academic-geographer.md": { + "hash": "4acf4a6ee6ae96ce", + "modified": "2026-03-29T11:45:15.980262+00:00", + "slug": "academic-geographer", + "source_path": "wiki/sources/academic-geographer.md", + "ingested": true, + "ingested_at": "2026-04-20T23:21:56.092076" + }, + "raw/Agent/agency-agents/academic/academic-historian.md": { + "hash": "2c59c10dceec033d", + "modified": "2026-03-29T11:45:15.980364+00:00", + "slug": "academic-historian", + "source_path": "wiki/sources/academic-historian.md", + "ingested": true, + "ingested_at": "2026-04-20T23:36:52.770399" + }, + "raw/Agent/agency-agents/integrations/README.md": { + "hash": "773438bdf196320e", + "modified": "2026-04-20T13:31:38.723035+00:00", + "slug": "integrations-readme", + "source_path": "wiki/sources/integrations-readme.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/integrations/aider/README.md": { + "hash": "26dc041627fb3970", + "modified": "2026-04-20T13:31:38.719607+00:00", + "slug": "aider-readme", + "source_path": "wiki/sources/aider-readme.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/integrations/claude-code/README.md": { + "hash": "b37cfa2648c93b32", + "modified": "2026-04-20T13:31:38.719941+00:00", + "slug": "claude-code-readme", + "source_path": "wiki/sources/claude-code-readme.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/integrations/mcp-memory/README.md": { + "hash": "e3252682132b4aa6", + "modified": "2026-03-29T11:45:15.990346+00:00", + "slug": "mcp-memory-readme", + "source_path": "wiki/sources/mcp-memory-readme.md", + "ingested": true, + "ingested_at": "2026-04-21T00:00:08.231543" + }, + "raw/Agent/agency-agents/integrations/mcp-memory/backend-architect-with-memory.md": { + "hash": "961975de8bff54a0", + "modified": "2026-03-29T11:45:15.990454+00:00", + "slug": "backend-architect-with-memory", + "source_path": "wiki/sources/backend-architect-with-memory.md", + "ingested": true, + "ingested_at": "2026-04-21T00:02:31.500735" + }, + "raw/Agent/agency-agents/integrations/openclaw/README.md": { + "hash": "4a2a0d6fb6d2ec7a", + "modified": "2026-03-29T11:45:15.990649+00:00", + "slug": "openclaw-readme", + "source_path": "wiki/sources/openclaw-readme.md", + "ingested": true, + "ingested_at": "2026-04-21T00:04:54.604484" + }, + "raw/Agent/agency-agents/integrations/cursor/README.md": { + "hash": "c59a7e8a40a6b79d", + "modified": "2026-04-20T13:31:38.721858+00:00", + "slug": "cursor-readme", + "source_path": "wiki/sources/cursor-readme.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/integrations/github-copilot/README.md": { + "hash": "81c59088b32258ba", + "modified": "2026-03-29T11:45:15.990112+00:00", + "slug": "github-copilot-readme", + "source_path": "wiki/sources/github-copilot-readme.md", + "ingested": true, + "ingested_at": "2026-04-21T00:09:37.038744" + }, + "raw/Agent/agency-agents/integrations/gemini-cli/README.md": { + "hash": "9f54cd4d8b4ef54a", + "modified": "2026-03-29T11:45:15.990005+00:00", + "slug": "gemini-cli-readme", + "source_path": "wiki/sources/gemini-cli-readme.md", + "ingested": true, + "ingested_at": "2026-04-21T00:12:00.953115" + }, + "raw/Agent/agency-agents/integrations/windsurf/README.md": { + "hash": "00d8863ed811f69f", + "modified": "2026-04-20T13:31:38.723706+00:00", + "slug": "windsurf-readme", + "source_path": "wiki/sources/windsurf-readme.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/integrations/antigravity/README.md": { + "hash": "087ed2a8a90d6ab9", + "modified": "2026-04-20T13:31:38.724099+00:00", + "slug": "antigravity-readme", + "source_path": "wiki/sources/antigravity-readme.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/integrations/kimi/README.md": { + "hash": "01aebb21981f1b34", + "modified": "2026-03-29T11:45:15.990226+00:00", + "slug": "kimi-readme", + "source_path": "wiki/sources/kimi-readme.md", + "ingested": true, + "ingested_at": "2026-04-21T00:19:02.501178" + }, + "raw/Agent/agency-agents/integrations/opencode/README.md": { + "hash": "e70b040b1296eb40", + "modified": "2026-04-20T13:31:38.724806+00:00", + "slug": "opencode-readme", + "source_path": "wiki/sources/opencode-readme.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/testing/testing-api-tester.md": { + "hash": "7812267518ff10c8", + "modified": "2026-03-29T11:45:16.003134+00:00", + "slug": "testing-api-tester", + "source_path": "wiki/sources/testing-api-tester.md", + "ingested": true, + "ingested_at": "2026-04-21T00:23:46.851284" + }, + "raw/Agent/agency-agents/testing/testing-workflow-optimizer.md": { + "hash": "021ba71e24550719", + "modified": "2026-03-29T11:45:16.003656+00:00", + "slug": "testing-workflow-optimizer", + "source_path": "wiki/sources/testing-workflow-optimizer.md", + "ingested": true, + "ingested_at": "2026-04-21T00:26:09.651575" + }, + "raw/Agent/agency-agents/testing/testing-reality-checker.md": { + "hash": "748334839b21f5b2", + "modified": "2026-03-29T11:45:16.003415+00:00", + "slug": "testing-reality-checker", + "source_path": "wiki/sources/testing-reality-checker.md", + "ingested": true, + "ingested_at": "2026-04-21T00:28:32.179614" + }, + "raw/Agent/agency-agents/testing/testing-performance-benchmarker.md": { + "hash": "db3cc9a462baa31e", + "modified": "2026-03-29T11:45:16.003326+00:00", + "slug": "testing-performance-benchmarker", + "source_path": "wiki/sources/testing-performance-benchmarker.md", + "ingested": true, + "ingested_at": "2026-04-21T00:30:52.444576" + }, + "raw/Agent/agency-agents/testing/testing-test-results-analyzer.md": { + "hash": "f080e1e8a5ddadc9", + "modified": "2026-03-29T11:45:16.003488+00:00", + "slug": "testing-test-results-analyzer", + "source_path": "wiki/sources/testing-test-results-analyzer.md", + "ingested": true, + "ingested_at": "2026-04-21T00:40:07.621392" + }, + "raw/Agent/agency-agents/testing/testing-evidence-collector.md": { + "hash": "d7e95b64033230aa", + "modified": "2026-03-29T11:45:16.003226+00:00", + "slug": "testing-evidence-collector", + "source_path": "wiki/sources/testing-evidence-collector.md", + "ingested": true, + "ingested_at": "2026-04-21T00:53:15.644710" + }, + "raw/Agent/agency-agents/testing/testing-tool-evaluator.md": { + "hash": "98e9a2b4491ffa19", + "modified": "2026-03-29T11:45:16.003567+00:00", + "slug": "testing-tool-evaluator", + "source_path": "wiki/sources/testing-tool-evaluator.md", + "ingested": true, + "ingested_at": "2026-04-21T01:05:03.788168" + }, + "raw/Agent/agency-agents/testing/testing-accessibility-auditor.md": { + "hash": "982a14c0d0a9b308", + "modified": "2026-03-29T11:45:16.003053+00:00", + "slug": "testing-accessibility-auditor", + "source_path": "wiki/sources/testing-accessibility-auditor.md", + "ingested": true, + "ingested_at": "2026-04-21T01:23:23.562204" + }, + "raw/Agent/agency-agents/support/support-legal-compliance-checker.md": { + "hash": "0544f2219d52742f", + "modified": "2026-03-29T11:45:16.002815+00:00", + "slug": "support-legal-compliance-checker", + "source_path": "wiki/sources/support-legal-compliance-checker.md", + "ingested": true, + "ingested_at": "2026-04-21T01:35:37.212055" + }, + "raw/Agent/agency-agents/support/support-analytics-reporter.md": { + "hash": "8d4a4d0835f9ecb5", + "modified": "2026-03-29T11:45:16.002434+00:00", + "slug": "support-analytics-reporter", + "source_path": "wiki/sources/support-analytics-reporter.md", + "ingested": true, + "ingested_at": "2026-04-21T01:49:51.865694" + }, + "raw/Agent/agency-agents/support/support-support-responder.md": { + "hash": "4dcd962743e940d1", + "modified": "2026-03-29T11:45:16.002913+00:00", + "slug": "support-support-responder", + "source_path": "wiki/sources/support-support-responder.md", + "ingested": true, + "ingested_at": "2026-04-21T02:05:44.425830" + }, + "raw/Agent/agency-agents/support/support-infrastructure-maintainer.md": { + "hash": "64d705a9e58f7386", + "modified": "2026-03-29T11:45:16.002719+00:00", + "slug": "support-infrastructure-maintainer", + "source_path": "wiki/sources/support-infrastructure-maintainer.md", + "ingested": true, + "ingested_at": "2026-04-21T02:20:43.646781" + }, + "raw/Agent/agency-agents/support/support-finance-tracker.md": { + "hash": "73b83d0b0ec4ce53", + "modified": "2026-03-29T11:45:16.002616+00:00", + "slug": "support-finance-tracker", + "source_path": "wiki/sources/support-finance-tracker.md", + "ingested": true, + "ingested_at": "2026-04-21T02:36:42.960326" + }, + "raw/Agent/agency-agents/support/support-executive-summary-generator.md": { + "hash": "298891fcf297de5d", + "modified": "2026-03-29T11:45:16.002530+00:00", + "slug": "support-executive-summary-generator", + "source_path": "wiki/sources/support-executive-summary-generator.md", + "ingested": true, + "ingested_at": "2026-04-21T02:51:29.938247" + }, + "raw/Agent/agency-agents/examples/workflow-book-chapter.md": { + "hash": "a0382f06c7536579", + "modified": "2026-03-29T11:45:15.986139+00:00", + "slug": "workflow-book-chapter", + "source_path": "wiki/sources/workflow-book-chapter.md", + "ingested": true, + "ingested_at": "2026-04-21T03:06:23.105724" + }, + "raw/Agent/agency-agents/examples/README.md": { + "hash": "4337886744e068c6", + "modified": "2026-03-29T11:45:15.985887+00:00", + "slug": "agency-agents-examples", + "source_path": "wiki/sources/agency-agents-examples.md", + "ingested": true, + "ingested_at": "2026-04-21T03:20:57.738860" + }, + "raw/Agent/agency-agents/examples/workflow-startup-mvp.md": { + "hash": "e540cc1c11e16ea5", + "modified": "2026-03-29T11:45:15.986353+00:00", + "slug": "workflow-startup-mvp", + "source_path": "wiki/sources/workflow-startup-mvp.md", + "ingested": true, + "ingested_at": "2026-04-21T03:36:07.232914" + }, + "raw/Agent/agency-agents/examples/workflow-landing-page.md": { + "hash": "05942259ec3fa56d", + "modified": "2026-03-29T11:45:15.986226+00:00", + "slug": "multi-agent-workflow-landing-page-sprint", + "source_path": "wiki/sources/multi-agent-workflow-landing-page-sprint.md", + "ingested": true, + "ingested_at": "2026-04-21T03:49:04.807112" + }, + "raw/Agent/agency-agents/examples/workflow-with-memory.md": { + "hash": "12d75f810271871e", + "modified": "2026-03-29T11:45:15.986475+00:00", + "slug": "workflow-with-memory", + "source_path": "wiki/sources/workflow-with-memory.md", + "ingested": true, + "ingested_at": "2026-04-21T04:04:49.702304" + }, + "raw/Agent/agency-agents/examples/nexus-spatial-discovery.md": { + "hash": "828bd93b1fbb2218", + "modified": "2026-03-29T11:45:15.986043+00:00", + "slug": "nexus-spatial-discovery", + "source_path": "wiki/sources/nexus-spatial-discovery.md", + "ingested": true, + "ingested_at": "2026-04-21T04:19:30.323190" + }, + "raw/Agent/agency-agents/marketing/marketing-douyin-strategist.md": { + "hash": "87e3b91287fc97ad", + "modified": "2026-03-29T11:45:15.992018+00:00", + "slug": "marketing-douyin-strategist", + "source_path": "wiki/sources/marketing-douyin-strategist.md", + "ingested": true, + "ingested_at": "2026-04-21T04:37:11.133895" + }, + "raw/Agent/agency-agents/marketing/marketing-zhihu-strategist.md": { + "hash": "35f6fd759a67860f", + "modified": "2026-03-29T11:45:15.994174+00:00", + "slug": "marketing-zhihu-strategist", + "source_path": "wiki/sources/marketing-zhihu-strategist.md", + "ingested": true, + "ingested_at": "2026-04-21T04:49:47.223906" + }, + "raw/Agent/agency-agents/marketing/marketing-book-co-author.md": { + "hash": "09ea2fb4770180b0", + "modified": "2026-03-29T11:45:15.991439+00:00", + "slug": "marketing-book-co-author", + "source_path": "wiki/sources/marketing-book-co-author.md", + "ingested": true, + "ingested_at": "2026-04-21T05:04:35.698794" + }, + "raw/Agent/agency-agents/marketing/marketing-cross-border-ecommerce.md": { + "hash": "073dba84e8159c76", + "modified": "2026-03-29T11:45:15.991925+00:00", + "slug": "Marketing-Cross-Border-Ecommerce-Specialist", + "source_path": "wiki/sources/Marketing-Cross-Border-Ecommerce-Specialist.md", + "ingested": true, + "ingested_at": "2026-04-21T05:21:02.196740" + }, + "raw/Agent/agency-agents/marketing/marketing-reddit-community-builder.md": { + "hash": "03bb723420800754", + "modified": "2026-03-29T11:45:15.992826+00:00", + "slug": "marketing-reddit-community-builder", + "source_path": "wiki/sources/marketing-reddit-community-builder.md", + "ingested": true, + "ingested_at": "2026-04-21T05:34:41.978187" + }, + "raw/Agent/agency-agents/marketing/marketing-china-ecommerce-operator.md": { + "hash": "aa6743c68cce9dd0", + "modified": "2026-03-29T11:45:15.991638+00:00", + "slug": "marketing-china-ecommerce-operator", + "source_path": "wiki/sources/marketing-china-ecommerce-operator.md", + "ingested": true, + "ingested_at": "2026-04-21T05:51:15.577793" + }, + "raw/Agent/agency-agents/marketing/marketing-instagram-curator.md": { + "hash": "bab95910975a9540", + "modified": "2026-03-29T11:45:15.992188+00:00", + "slug": "marketing-instagram-curator", + "source_path": "wiki/sources/marketing-instagram-curator.md", + "ingested": true, + "ingested_at": "2026-04-21T06:06:26.446430" + }, + "raw/Agent/agency-agents/marketing/marketing-video-optimization-specialist.md": { + "hash": "9cf82969be8898c9", + "modified": "2026-03-29T11:45:15.993492+00:00", + "slug": "marketing-video-optimization-specialist", + "source_path": "wiki/sources/marketing-video-optimization-specialist.md", + "ingested": true, + "ingested_at": "2026-04-21T06:18:43.419491" + }, + "raw/Agent/agency-agents/marketing/marketing-kuaishou-strategist.md": { + "hash": "d28742e505fa7bf6", + "modified": "2026-03-29T11:45:15.992283+00:00", + "slug": "marketing-kuaishou-strategist", + "source_path": "wiki/sources/marketing-kuaishou-strategist.md", + "ingested": true, + "ingested_at": "2026-04-21T06:35:15.621802" + }, + "raw/Agent/agency-agents/marketing/marketing-social-media-strategist.md": { + "hash": "7c698a9280872666", + "modified": "2026-03-29T11:45:15.993179+00:00", + "slug": "marketing-social-media-strategist", + "source_path": "wiki/sources/marketing-social-media-strategist.md", + "ingested": true, + "ingested_at": "2026-04-21T06:48:52.582998" + }, + "raw/Agent/agency-agents/marketing/marketing-short-video-editing-coach.md": { + "hash": "4634520ab5e84b26", + "modified": "2026-03-29T11:45:15.993078+00:00", + "slug": "marketing-short-video-editing-coach", + "source_path": "wiki/sources/marketing-short-video-editing-coach.md", + "ingested": true, + "ingested_at": "2026-04-21T07:07:06.133972" + }, + "raw/Agent/agency-agents/marketing/marketing-private-domain-operator.md": { + "hash": "7d8372b562324d4c", + "modified": "2026-03-29T11:45:15.992725+00:00", + "slug": "marketing-private-domain-operator", + "source_path": "wiki/sources/marketing-private-domain-operator.md", + "ingested": true, + "ingested_at": "2026-04-21T07:20:35.242185" + }, + "raw/Agent/agency-agents/marketing/marketing-carousel-growth-engine.md": { + "hash": "04ef895d1d9f1dd5", + "modified": "2026-03-29T11:45:15.991539+00:00", + "slug": "marketing-carousel-growth-engine", + "source_path": "wiki/sources/marketing-carousel-growth-engine.md", + "ingested": true, + "ingested_at": "2026-04-21T07:35:28.167455" + }, + "raw/Agent/agency-agents/marketing/marketing-baidu-seo-specialist.md": { + "hash": "895a5e8440066ad0", + "modified": "2026-03-29T11:45:15.991200+00:00", + "slug": "marketing-baidu-seo-specialist", + "source_path": "wiki/sources/marketing-baidu-seo-specialist.md", + "ingested": true, + "ingested_at": "2026-04-21T07:51:17.955883" + }, + "raw/Agent/agency-agents/marketing/marketing-weibo-strategist.md": { + "hash": "7a79f1ec3894ab2e", + "modified": "2026-03-29T11:45:15.993865+00:00", + "slug": "marketing-weibo-strategist", + "source_path": "wiki/sources/marketing-weibo-strategist.md", + "ingested": true, + "ingested_at": "2026-04-21T08:06:24.946049" + }, + "raw/Agent/agency-agents/marketing/marketing-linkedin-content-creator.md": { + "hash": "344896bff33acf0b", + "modified": "2026-03-29T11:45:15.992389+00:00", + "slug": "marketing-linkedin-content-creator", + "source_path": "wiki/sources/marketing-linkedin-content-creator.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/marketing/marketing-wechat-official-account.md": { + "hash": "b74a42aff9b960cb", + "modified": "2026-03-29T11:45:15.993743+00:00", + "slug": "marketing-wechat-official-account", + "source_path": "wiki/sources/marketing-wechat-official-account.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/marketing/marketing-app-store-optimizer.md": { + "hash": "ed7c05b3a3e0965c", + "modified": "2026-03-29T11:45:15.991104+00:00", + "slug": "marketing-app-store-optimizer", + "source_path": "wiki/sources/marketing-app-store-optimizer.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/marketing/marketing-china-market-localization-strategist.md": { + "hash": "7f6351003b0d6525", + "modified": "2026-03-29T11:45:15.991753+00:00", + "slug": "marketing-china-market-localization-strategist", + "source_path": "wiki/sources/marketing-china-market-localization-strategist.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/marketing/marketing-seo-specialist.md": { + "hash": "b2aa467176bb3489", + "modified": "2026-04-20T13:31:38.734102+00:00", + "slug": "marketing-seo-specialist", + "source_path": "wiki/sources/marketing-seo-specialist.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/marketing/marketing-tiktok-strategist.md": { + "hash": "980ca09138f63ec2", + "modified": "2026-03-29T11:45:15.993303+00:00", + "slug": "marketing-tiktok-strategist", + "source_path": "wiki/sources/marketing-tiktok-strategist.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/marketing/marketing-livestream-commerce-coach.md": { + "hash": "2d53e67cd70d825a", + "modified": "2026-03-29T11:45:15.992493+00:00", + "slug": "marketing-livestream-commerce-coach", + "source_path": "wiki/sources/marketing-livestream-commerce-coach.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/marketing/marketing-twitter-engager.md": { + "hash": "df58c7df04fb808d", + "modified": "2026-03-29T11:45:15.993394+00:00", + "slug": "marketing-twitter-engager", + "source_path": "wiki/sources/marketing-twitter-engager.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/marketing/marketing-content-creator.md": { + "hash": "676c536de09bd371", + "modified": "2026-03-29T11:45:15.991833+00:00", + "slug": "marketing-content-creator", + "source_path": "wiki/sources/marketing-content-creator.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/marketing/marketing-bilibili-content-strategist.md": { + "hash": "4268a7b51025967f", + "modified": "2026-03-29T11:45:15.991312+00:00", + "slug": "marketing-bilibili-content-strategist", + "source_path": "wiki/sources/marketing-bilibili-content-strategist.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/marketing/marketing-podcast-strategist.md": { + "hash": "37fb126529afb4aa", + "modified": "2026-03-29T11:45:15.992606+00:00", + "slug": "marketing-podcast-strategist", + "source_path": "wiki/sources/marketing-podcast-strategist.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/marketing/marketing-xiaohongshu-specialist.md": { + "hash": "c0afe07b77d7795f", + "modified": "2026-03-29T11:45:15.994019+00:00", + "slug": "marketing-xiaohongshu-specialist", + "source_path": "wiki/sources/marketing-xiaohongshu-specialist.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/marketing/marketing-growth-hacker.md": { + "hash": "3b1157ed09dc0402", + "modified": "2026-03-29T11:45:15.992100+00:00", + "slug": "marketing-growth-hacker", + "source_path": "wiki/sources/marketing-growth-hacker.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/marketing/marketing-ai-citation-strategist.md": { + "hash": "7cd2e456680669ec", + "modified": "2026-03-29T11:45:15.991012+00:00", + "slug": "marketing-ai-citation-strategist", + "source_path": "wiki/sources/marketing-ai-citation-strategist.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/game-development/game-audio-engineer.md": { + "hash": "d7a2eebd8c20021e", + "modified": "2026-03-29T11:45:15.987056+00:00", + "slug": "game-audio-engineer", + "source_path": "wiki/sources/game-audio-engineer.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/game-development/technical-artist.md": { + "hash": "8a669de1fa3455c4", + "modified": "2026-03-29T11:45:15.988478+00:00", + "slug": "technical-artist", + "source_path": "wiki/sources/technical-artist.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/game-development/level-designer.md": { + "hash": "79c1d41b7dfc477f", + "modified": "2026-03-29T11:45:15.987733+00:00", + "slug": "level-designer", + "source_path": "wiki/sources/level-designer.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/game-development/narrative-designer.md": { + "hash": "7a5489c7b0502aa1", + "modified": "2026-03-29T11:45:15.987936+00:00", + "slug": "narrative-designer", + "source_path": "wiki/sources/narrative-designer.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/game-development/game-designer.md": { + "hash": "203c4d7f0358a628", + "modified": "2026-03-29T11:45:15.987274+00:00", + "slug": "game-designer", + "source_path": "wiki/sources/game-designer.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/game-development/unreal-engine/unreal-technical-artist.md": { + "hash": "54bdd46bc872ba21", + "modified": "2026-03-29T11:45:15.989264+00:00", + "slug": "unreal-technical-artist", + "source_path": "wiki/sources/unreal-technical-artist.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/game-development/unreal-engine/unreal-multiplayer-architect.md": { + "hash": "666a4d07a6cfaf9d", + "modified": "2026-03-29T11:45:15.989054+00:00", + "slug": "unreal-multiplayer-architect", + "source_path": "wiki/sources/unreal-multiplayer-architect.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/game-development/unreal-engine/unreal-systems-engineer.md": { + "hash": "ca34c6be64ee4f60", + "modified": "2026-03-29T11:45:15.989156+00:00", + "slug": "unreal-systems-engineer", + "source_path": "wiki/sources/unreal-systems-engineer.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/game-development/unreal-engine/unreal-world-builder.md": { + "hash": "7d2bf21ac77089b9", + "modified": "2026-03-29T11:45:15.989365+00:00", + "slug": "unreal-world-builder", + "source_path": "wiki/sources/unreal-world-builder.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/game-development/unity/unity-editor-tool-developer.md": { + "hash": "8b368fe6ee0a4c0c", + "modified": "2026-03-29T11:45:15.988734+00:00", + "slug": "unity-editor-tool-developer", + "source_path": "wiki/sources/unity-editor-tool-developer.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/game-development/unity/unity-shader-graph-artist.md": { + "hash": "3e2033f179a95da2", + "modified": "2026-03-29T11:45:15.988920+00:00", + "slug": "unity-shader-graph-artist", + "source_path": "wiki/sources/unity-shader-graph-artist.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/game-development/unity/unity-multiplayer-engineer.md": { + "hash": "61561d24650216ef", + "modified": "2026-03-29T11:45:15.988826+00:00", + "slug": "unity-multiplayer-engineer", + "source_path": "wiki/sources/unity-multiplayer-engineer.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/game-development/unity/unity-architect.md": { + "hash": "15502fbcd46fcd75", + "modified": "2026-03-29T11:45:15.988633+00:00", + "slug": "unity-architect", + "source_path": "wiki/sources/unity-architect.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/game-development/roblox-studio/roblox-experience-designer.md": { + "hash": "569f75a1b6448a30", + "modified": "2026-03-29T11:45:15.988178+00:00", + "slug": "roblox-experience-designer", + "source_path": "wiki/sources/roblox-experience-designer.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/game-development/roblox-studio/roblox-systems-scripter.md": { + "hash": "6d7e11b07aba99ee", + "modified": "2026-03-29T11:45:15.988363+00:00", + "slug": "roblox-systems-scripter", + "source_path": "wiki/sources/roblox-systems-scripter.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/game-development/roblox-studio/roblox-avatar-creator.md": { + "hash": "6bdb5af6fe5c390d", + "modified": "2026-03-29T11:45:15.988073+00:00", + "slug": "roblox-avatar-creator", + "source_path": "wiki/sources/roblox-avatar-creator.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/game-development/blender/blender-addon-engineer.md": { + "hash": "f6bf42625647999d", + "modified": "2026-03-29T11:45:15.986798+00:00", + "slug": "blender-addon-engineer", + "source_path": "wiki/sources/blender-addon-engineer.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/game-development/godot/godot-gameplay-scripter.md": { + "hash": "0cce0fc75b3a7eee", + "modified": "2026-03-29T11:45:15.987419+00:00", + "slug": "godot-gameplay-scripter", + "source_path": "wiki/sources/godot-gameplay-scripter.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/game-development/godot/godot-shader-developer.md": { + "hash": "1362da1ba227aea6", + "modified": "2026-03-29T11:45:15.987619+00:00", + "slug": "godot-shader-developer", + "source_path": "wiki/sources/godot-shader-developer.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/game-development/godot/godot-multiplayer-engineer.md": { + "hash": "d72e7798c03e6fa2", + "modified": "2026-03-29T11:45:15.987518+00:00", + "slug": "godot-multiplayer-engineer", + "source_path": "wiki/sources/godot-multiplayer-engineer.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/engineering/engineering-software-architect.md": { + "hash": "08239f789f83fbd9", + "modified": "2026-03-29T11:45:15.984928+00:00", + "slug": "engineering-software-architect", + "source_path": "wiki/sources/engineering-software-architect.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/engineering/engineering-mobile-app-builder.md": { + "hash": "5b6d3d6ba2db8609", + "modified": "2026-03-29T11:45:15.984244+00:00", + "slug": "engineering-mobile-app-builder", + "source_path": "wiki/sources/engineering-mobile-app-builder.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/engineering/engineering-autonomous-optimization-architect.md": { + "hash": "6904f627eff4a203", + "modified": "2026-03-29T11:45:15.982349+00:00", + "slug": "engineering-autonomous-optimization-architect", + "source_path": "wiki/sources/engineering-autonomous-optimization-architect.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/engineering/engineering-filament-optimization-specialist.md": { + "hash": "428f6a6be2318a12", + "modified": "2026-03-29T11:45:15.983808+00:00", + "slug": "engineering-filament-optimization-specialist", + "source_path": "wiki/sources/engineering-filament-optimization-specialist.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/engineering/engineering-backend-architect.md": { + "hash": "15f9e1361f63a555", + "modified": "2026-03-29T11:45:15.982558+00:00", + "slug": "engineering-backend-architect", + "source_path": "wiki/sources/engineering-backend-architect.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/engineering/engineering-code-reviewer.md": { + "hash": "7509fcc3ea1dda46", + "modified": "2026-03-29T11:45:15.982774+00:00", + "slug": "engineering-code-reviewer", + "source_path": "wiki/sources/engineering-code-reviewer.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/engineering/engineering-technical-writer.md": { + "hash": "70c8a29cddf7de48", + "modified": "2026-03-29T11:45:15.985418+00:00", + "slug": "engineering-technical-writer", + "source_path": "wiki/sources/engineering-technical-writer.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/engineering/engineering-wechat-mini-program-developer.md": { + "hash": "dcda22b2d93c1bbf", + "modified": "2026-03-29T11:45:15.985770+00:00", + "slug": "engineering-wechat-mini-program-developer", + "source_path": "wiki/sources/engineering-wechat-mini-program-developer.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/engineering/engineering-rapid-prototyper.md": { + "hash": "327598e2cee41b78", + "modified": "2026-03-29T11:45:15.984462+00:00", + "slug": "engineering-rapid-prototyper", + "source_path": "wiki/sources/engineering-rapid-prototyper.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/engineering/engineering-embedded-firmware-engineer.md": { + "hash": "8453982bc1ae4b5c", + "modified": "2026-03-29T11:45:15.983479+00:00", + "slug": "engineering-embedded-firmware-engineer", + "source_path": "wiki/sources/engineering-embedded-firmware-engineer.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/engineering/engineering-email-intelligence-engineer.md": { + "hash": "bef84b77b2ce3f2c", + "modified": "2026-03-29T11:45:15.983371+00:00", + "slug": "engineering-email-intelligence-engineer", + "source_path": "wiki/sources/engineering-email-intelligence-engineer.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/engineering/engineering-feishu-integration-developer.md": { + "hash": "836667ab301da70a", + "modified": "2026-03-29T11:45:15.983592+00:00", + "slug": "engineering-feishu-integration-developer", + "source_path": "wiki/sources/engineering-feishu-integration-developer.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/engineering/engineering-ai-engineer.md": { + "hash": "f25a69aad25acd35", + "modified": "2026-03-29T11:45:15.982251+00:00", + "slug": "engineering-ai-engineer", + "source_path": "wiki/sources/engineering-ai-engineer.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/engineering/engineering-threat-detection-engineer.md": { + "hash": "83bfaabe485d5196", + "modified": "2026-03-29T11:45:15.985547+00:00", + "slug": "engineering-threat-detection-engineer", + "source_path": "wiki/sources/engineering-threat-detection-engineer.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/engineering/engineering-database-optimizer.md": { + "hash": "a58860b44590ed64", + "modified": "2026-03-29T11:45:15.983062+00:00", + "slug": "engineering-database-optimizer", + "source_path": "wiki/sources/engineering-database-optimizer.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/engineering/engineering-senior-developer.md": { + "hash": "63b8da6c12b95f54", + "modified": "2026-03-29T11:45:15.984834+00:00", + "slug": "engineering-senior-developer", + "source_path": "wiki/sources/engineering-senior-developer.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/engineering/engineering-git-workflow-master.md": { + "hash": "b2ab151fa5dc3103", + "modified": "2026-03-29T11:45:15.984010+00:00", + "slug": "engineering-git-workflow-master", + "source_path": "wiki/sources/engineering-git-workflow-master.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/engineering/engineering-cms-developer.md": { + "hash": "e072ac6e3d485483", + "modified": "2026-03-29T11:45:15.982679+00:00", + "slug": "engineering-cms-developer", + "source_path": "wiki/sources/engineering-cms-developer.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/engineering/engineering-security-engineer.md": { + "hash": "d6ce02769f3dbe73", + "modified": "2026-03-29T11:45:15.984575+00:00", + "slug": "engineering-security-engineer", + "source_path": "wiki/sources/engineering-security-engineer.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/engineering/engineering-devops-automator.md": { + "hash": "5d3c3d12c605a8c0", + "modified": "2026-03-29T11:45:15.983262+00:00", + "slug": "engineering-devops-automator", + "source_path": "wiki/sources/engineering-devops-automator.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/engineering/engineering-sre.md": { + "hash": "85b305e495506913", + "modified": "2026-03-29T11:45:15.985312+00:00", + "slug": "engineering-sre", + "source_path": "wiki/sources/engineering-sre.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/engineering/engineering-data-engineer.md": { + "hash": "d46e5ebdb81f5f3e", + "modified": "2026-03-29T11:45:15.982980+00:00", + "slug": "engineering-data-engineer", + "source_path": "wiki/sources/engineering-data-engineer.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/engineering/engineering-ai-data-remediation-engineer.md": { + "hash": "5aa193052f152834", + "modified": "2026-03-29T11:45:15.982162+00:00", + "slug": "engineering-ai-data-remediation-engineer", + "source_path": "wiki/sources/engineering-ai-data-remediation-engineer.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/engineering/engineering-solidity-smart-contract-engineer.md": { + "hash": "1f68b7857b83c613", + "modified": "2026-03-29T11:45:15.985056+00:00", + "slug": "engineering-solidity-smart-contract-engineer", + "source_path": "wiki/sources/engineering-solidity-smart-contract-engineer.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/engineering/engineering-incident-response-commander.md": { + "hash": "1df5c8f558f99a8d", + "modified": "2026-03-29T11:45:15.984127+00:00", + "slug": "engineering-incident-response-commander", + "source_path": "wiki/sources/engineering-incident-response-commander.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/engineering/engineering-frontend-developer.md": { + "hash": "35961da50f408e00", + "modified": "2026-03-29T11:45:15.983926+00:00", + "slug": "engineering-frontend-developer", + "source_path": "wiki/sources/engineering-frontend-developer.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/strategy/QUICKSTART.md": { + "hash": "8a1f9053e6e31a06", + "modified": "2026-03-29T11:45:16.000973+00:00", + "slug": "QUICKSTART", + "source_path": "wiki/sources/QUICKSTART.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/strategy/EXECUTIVE-BRIEF.md": { + "hash": "628907121b4fa630", + "modified": "2026-03-29T11:45:16.000880+00:00", + "slug": "EXECUTIVE-BRIEF", + "source_path": "wiki/sources/EXECUTIVE-BRIEF.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/strategy/nexus-strategy.md": { + "hash": "59d4b4ad9c69305f", + "modified": "2026-03-29T11:45:16.001333+00:00", + "slug": "nexus-strategy", + "source_path": "wiki/sources/nexus-strategy.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/strategy/coordination/handoff-templates.md": { + "hash": "297dff8ea47b35e0", + "modified": "2026-03-29T11:45:16.001185+00:00", + "slug": "handoff-templates", + "source_path": "wiki/sources/handoff-templates.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/strategy/coordination/agent-activation-prompts.md": { + "hash": "9db4323a005d28d2", + "modified": "2026-03-29T11:45:16.001093+00:00", + "slug": "agent-activation-prompts", + "source_path": "wiki/sources/agent-activation-prompts.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/strategy/runbooks/scenario-incident-response.md": { + "hash": "b08fe23eddcc6f50", + "modified": "2026-03-29T11:45:16.002172+00:00", + "slug": "scenario-incident-response", + "source_path": "wiki/sources/scenario-incident-response.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/strategy/runbooks/scenario-marketing-campaign.md": { + "hash": "979c985e5cbb6a42", + "modified": "2026-03-29T11:45:16.002242+00:00", + "slug": "scenario-marketing-campaign", + "source_path": "wiki/sources/scenario-marketing-campaign.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/strategy/runbooks/scenario-enterprise-feature.md": { + "hash": "40e20eac5c6eb54f", + "modified": "2026-03-29T11:45:16.002098+00:00", + "slug": "scenario-enterprise-feature", + "source_path": "wiki/sources/scenario-enterprise-feature.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/strategy/runbooks/scenario-startup-mvp.md": { + "hash": "90eb81f4338453ce", + "modified": "2026-03-29T11:45:16.002310+00:00", + "slug": "scenario-startup-mvp", + "source_path": "wiki/sources/scenario-startup-mvp.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/strategy/playbooks/phase-2-foundation.md": { + "hash": "16c02d3c0debc957", + "modified": "2026-03-29T11:45:16.001621+00:00", + "slug": "phase-2-foundation", + "source_path": "wiki/sources/phase-2-foundation.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/strategy/playbooks/phase-1-strategy.md": { + "hash": "8509ef04a669ec01", + "modified": "2026-03-29T11:45:16.001529+00:00", + "slug": "phase-1-strategy", + "source_path": "wiki/sources/phase-1-strategy.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/strategy/playbooks/phase-0-discovery.md": { + "hash": "0ae7d5cfc479e0d2", + "modified": "2026-03-29T11:45:16.001455+00:00", + "slug": "phase-0-discovery", + "source_path": "wiki/sources/phase-0-discovery.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/strategy/playbooks/phase-4-hardening.md": { + "hash": "0db1b7dc62dccc30", + "modified": "2026-03-29T11:45:16.001804+00:00", + "slug": "phase-4-hardening", + "source_path": "wiki/sources/phase-4-hardening.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/strategy/playbooks/phase-3-build.md": { + "hash": "b9b2383e0c6e135d", + "modified": "2026-03-29T11:45:16.001712+00:00", + "slug": "phase-3-build", + "source_path": "wiki/sources/phase-3-build.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/strategy/playbooks/phase-6-operate.md": { + "hash": "5681569052513c33", + "modified": "2026-03-29T11:45:16.001991+00:00", + "slug": "phase-6-operate", + "source_path": "wiki/sources/phase-6-operate.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/strategy/playbooks/phase-5-launch.md": { + "hash": "afae11996e699041", + "modified": "2026-03-29T11:45:16.001896+00:00", + "slug": "phase-5-launch", + "source_path": "wiki/sources/phase-5-launch.md", + "ingested": false, + "ingested_at": null + }, + "raw/AI/如何让AI生成风格一致的图片.md": { + "hash": "3cd96a070186bd1d", + "modified": "2026-04-18T22:25:46.444173+00:00", + "slug": "如何让AI生成风格一致的图片", + "source_path": "wiki/sources/如何让AI生成风格一致的图片.md", + "ingested": false, + "ingested_at": null + }, + "raw/Skills/baoyu-skills.md": { + "hash": "60483c3c74f6dd8b", + "modified": "2026-04-19T06:51:38.466793+00:00", + "slug": "baoyu-skills", + "source_path": "wiki/sources/baoyu-skills.md", + "ingested": true, + "ingested_at": "2026-04-20T03:38:22.372427" + }, + "raw/Agent/LLM Wiki.md": { + "hash": "75a85a530ee40a5e", + "modified": "2026-04-20T06:42:58.873699+00:00", + "slug": "LLM-Wiki", + "source_path": "wiki/sources/LLM-Wiki.md", + "ingested": true, + "ingested_at": "2026-04-20T06:52:14.458614+00:00" + }, + "raw/Agent/Karpathy 最新分享:用 LLM 搭建个人知识库,告别 RAG 的低效循环.md": { + "hash": "5eb90920f1249fbd", + "modified": "2026-04-20T06:31:44.737663+00:00", + "slug": "Karpathy-最新分享-用-LLM-搭建个人知识库-告别-RAG-的低效循环", + "source_path": "wiki/sources/Karpathy-最新分享-用-LLM-搭建个人知识库-告别-RAG-的低效循环.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/SECURITY.md": { + "hash": "39430fea66309d26", + "modified": "2026-04-20T13:31:38.747061+00:00", + "slug": "SECURITY", + "source_path": "wiki/sources/SECURITY.md", + "ingested": true, + "ingested_at": "2026-04-20T22:05:13.785987" + }, + "raw/Agent/agency-agents/specialized/hospitality-guest-services.md": { + "hash": "1c5819c560d3902e", + "modified": "2026-04-20T13:31:38.750057+00:00", + "slug": "hospitality-guest-services", + "source_path": "wiki/sources/hospitality-guest-services.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/specialized/legal-client-intake.md": { + "hash": "b0b1cce8a30f08ad", + "modified": "2026-04-20T13:31:38.750628+00:00", + "slug": "legal-client-intake", + "source_path": "wiki/sources/legal-client-intake.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/specialized/legal-billing-time-tracking.md": { + "hash": "27f8405564315045", + "modified": "2026-04-20T13:31:38.751237+00:00", + "slug": "legal-billing-time-tracking", + "source_path": "wiki/sources/legal-billing-time-tracking.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/specialized/healthcare-customer-service.md": { + "hash": "b2e4117a8b449a94", + "modified": "2026-04-20T13:31:38.751495+00:00", + "slug": "healthcare-customer-service", + "source_path": "wiki/sources/healthcare-customer-service.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/specialized/customer-service.md": { + "hash": "71d5b8ccd6fb6c58", + "modified": "2026-04-20T13:31:38.752266+00:00", + "slug": "customer-service", + "source_path": "wiki/sources/customer-service.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/specialized/hr-onboarding.md": { + "hash": "28a52c26f27ab24d", + "modified": "2026-04-20T13:31:38.752470+00:00", + "slug": "hr-onboarding", + "source_path": "wiki/sources/hr-onboarding.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/specialized/specialized-chief-of-staff.md": { + "hash": "c0d053f19f32d369", + "modified": "2026-04-20T13:31:38.753428+00:00", + "slug": "specialized-chief-of-staff", + "source_path": "wiki/sources/specialized-chief-of-staff.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/specialized/retail-customer-returns.md": { + "hash": "5cd60860a6ea57a9", + "modified": "2026-04-20T13:31:38.753856+00:00", + "slug": "retail-customer-returns", + "source_path": "wiki/sources/retail-customer-returns.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/specialized/sales-outreach.md": { + "hash": "84d4ca90d4bed464", + "modified": "2026-04-20T13:31:38.754790+00:00", + "slug": "sales-outreach", + "source_path": "wiki/sources/sales-outreach.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/specialized/legal-document-review.md": { + "hash": "02bf51dbc9d8ffc9", + "modified": "2026-04-20T13:31:38.756984+00:00", + "slug": "legal-document-review", + "source_path": "wiki/sources/legal-document-review.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/specialized/real-estate-buyer-seller.md": { + "hash": "00e2f54e76be38c8", + "modified": "2026-04-20T13:31:38.758033+00:00", + "slug": "real-estate-buyer-seller", + "source_path": "wiki/sources/real-estate-buyer-seller.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/specialized/loan-officer-assistant.md": { + "hash": "3d6bfdb598187fb1", + "modified": "2026-04-20T13:31:38.758323+00:00", + "slug": "loan-officer-assistant", + "source_path": "wiki/sources/loan-officer-assistant.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/specialized/language-translator.md": { + "hash": "afd1e4b5fb1bb8fa", + "modified": "2026-04-20T13:31:38.759110+00:00", + "slug": "language-translator", + "source_path": "wiki/sources/language-translator.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/integrations/qwen/README.md": { + "hash": "486a95c5a8a66d09", + "modified": "2026-04-20T13:31:38.722248+00:00", + "slug": "README", + "source_path": "wiki/sources/README.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/scripts/i18n/README.md": { + "hash": "fcf424cd7af5444f", + "modified": "2026-04-20T13:31:38.746189+00:00", + "slug": "README", + "source_path": "wiki/sources/README.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/marketing/marketing-agentic-search-optimizer.md": { + "hash": "1fce74cb42bc8461", + "modified": "2026-04-20T13:31:38.727694+00:00", + "slug": "marketing-agentic-search-optimizer", + "source_path": "wiki/sources/marketing-agentic-search-optimizer.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/finance/finance-tax-strategist.md": { + "hash": "37ea1a246e1290f4", + "modified": "2026-04-20T13:31:38.707909+00:00", + "slug": "finance-tax-strategist", + "source_path": "wiki/sources/finance-tax-strategist.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/finance/finance-financial-analyst.md": { + "hash": "3547907cd52e6108", + "modified": "2026-04-20T13:31:38.708302+00:00", + "slug": "finance-financial-analyst", + "source_path": "wiki/sources/finance-financial-analyst.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/finance/finance-investment-researcher.md": { + "hash": "4851318dcd82fdfd", + "modified": "2026-04-20T13:31:38.708972+00:00", + "slug": "finance-investment-researcher", + "source_path": "wiki/sources/finance-investment-researcher.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/finance/finance-fpa-analyst.md": { + "hash": "5fa9137c80e0b91f", + "modified": "2026-04-20T13:31:38.709351+00:00", + "slug": "finance-fpa-analyst", + "source_path": "wiki/sources/finance-fpa-analyst.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/finance/finance-bookkeeper-controller.md": { + "hash": "5510a24274d8f789", + "modified": "2026-04-20T13:31:38.709779+00:00", + "slug": "finance-bookkeeper-controller", + "source_path": "wiki/sources/finance-bookkeeper-controller.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/engineering/engineering-minimal-change-engineer.md": { + "hash": "9999cc74e7b3936a", + "modified": "2026-04-20T13:31:38.688429+00:00", + "slug": "engineering-minimal-change-engineer", + "source_path": "wiki/sources/engineering-minimal-change-engineer.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/engineering/engineering-codebase-onboarding-engineer.md": { + "hash": "07aa548b45887c3a", + "modified": "2026-04-20T13:31:38.697916+00:00", + "slug": "engineering-codebase-onboarding-engineer", + "source_path": "wiki/sources/engineering-codebase-onboarding-engineer.md", + "ingested": false, + "ingested_at": null + }, + "raw/Agent/agency-agents/engineering/engineering-voice-ai-integration-engineer.md": { + "hash": "de80469db772d96f", + "modified": "2026-04-20T13:31:38.702567+00:00", + "slug": "engineering-voice-ai-integration-engineer", + "source_path": "wiki/sources/engineering-voice-ai-integration-engineer.md", "ingested": false, "ingested_at": null } diff --git a/tools/sync.py b/tools/sync.py index b3234a1..5e79a01 100755 --- a/tools/sync.py +++ b/tools/sync.py @@ -4,13 +4,14 @@ Wiki ↔ Raw 三向同步工具 功能: - 检测 raw/ 下文件变化(新增/修改/删除) - - 调用 Claude Code agent 进行同步(不使用 litellm) - 维护 manifest.json 状态映射 - 检测 orphan entity/concept(仅报告,不删除) 用法: python tools/sync.py --check 预览变化(不执行) - python tools/sync.py --sync 执行同步 + python tools/sync.py --sync 执行同步(更新 manifest) + python tools/sync.py --pending 显示待处理文件列表 + python tools/sync.py --json JSON 行输出(供程序消费) python tools/sync.py --rebuild 从 manifest 重建 wiki/index(兜底) manifest.json 格式: @@ -29,20 +30,16 @@ manifest.json 格式: } """ -import os -import sys import json import hashlib -import subprocess +import argparse from pathlib import Path from datetime import datetime, timezone REPO_ROOT = Path(__file__).parent.parent.resolve() WIKI_DIR = REPO_ROOT / "wiki" -# manifest.json 放在 tools/ 而非 wiki/,避免 symlink 路径问题 MANIFEST_FILE = Path(__file__).parent / "manifest.json" -SCHEMA_FILE = REPO_ROOT / "CLAUDE.md" # ─── 工具函数 ─────────────────────────────────────────────── @@ -127,107 +124,8 @@ def build_slug_from_path(rel_path: str) -> str: return name or "untitled" -def call_ingest(abs_path: str, slug: str, json_mode: bool = False) -> dict: - """调用 Claude Code agent 执行 /wiki-ingest,返回结果 - - 使用 TMUX 交互模式调用 Claude Code Agent - 返回 special status 让 Hermes 可以手动处理 TMUX 会话 - """ - return { - "status": "needs_manual_tmux", - "abs_path": abs_path, - "slug": slug, - "message": "需要通过 TMUX 手动执行 /wiki-ingest,请使用 llm-wiki-sync 技能流程", - } - - -def parse_slug_from_output(output: str) -> str | None: - """从 TMUX 输出中解析 SLUG: xxx 行""" - import re - match = re.search(r"SLUG:\s*([a-zA-Z0-9_-]+)", output) - return match.group(1) if match else None - - -def update_manifest_with_slug(rel_path: str, actual_slug: str) -> bool: - """更新 manifest 中的 slug 和 source_path""" - import json - from datetime import datetime, timezone - - manifest_file = Path(__file__).parent / "manifest.json" - if not manifest_file.exists(): - return False - - try: - manifest = json.loads(manifest_file.read_text(encoding="utf-8")) - if rel_path in manifest["files"]: - manifest["files"][rel_path]["slug"] = actual_slug - manifest["files"][rel_path]["source_path"] = f"wiki/sources/{actual_slug}.md" - manifest["files"][rel_path]["ingested"] = True - manifest["files"][rel_path]["ingested_at"] = datetime.now(timezone.utc).isoformat() - manifest["updated_at"] = datetime.now(timezone.utc).isoformat() - manifest_file.write_text(json.dumps(manifest, ensure_ascii=False, indent=2), encoding="utf-8") - return True - except Exception as e: - print(f"Error updating manifest: {e}") - return False - - -def start_tmux_session() -> bool: - """启动 TMUX session 用于 wiki ingest""" - TMUX_SESSION = "wiki-ingest" - - # 检查 TMUX session 是否存在 - check = subprocess.run( - ["tmux", "has-session", "-t", TMUX_SESSION], - capture_output=True, - ) - - if check.returncode == 0: - print(f" TMUX session '{TMUX_SESSION}' already exists") - return True - - # 创建新 session - subprocess.run( - ["tmux", "new-session", "-d", "-s", TMUX_SESSION, - f"cd {REPO_ROOT} && claude --permission-mode bypassPermissions"], - check=True, - ) - print(f" Created TMUX session '{TMUX_SESSION}'") - return True - - -def send_to_tmux(command: str) -> bool: - """发送命令到 TMUX session""" - TMUX_SESSION = "wiki-ingest" - subprocess.run( - ["tmux", "send-keys", "-t", TMUX_SESSION, f"{command}\n"], - check=True, - ) - return True - - -def wait_for_completion(seconds: int = 120) -> bool: - """等待 Claude Code 完成处理""" - import time - print(f" Waiting {seconds}s for Claude Code to complete...") - time.sleep(seconds) - return True - - -def cleanup_tmux() -> bool: - """清理 TMUX session""" - TMUX_SESSION = "wiki-ingest" - subprocess.run( - ["tmux", "kill-session", "-t", TMUX_SESSION], - capture_output=True, - ) - print(f" Killed TMUX session '{TMUX_SESSION}'") - return True - - def find_orphan_entity_concept(manifest: dict) -> tuple[list, list]: """检测未被任何 source page 引用的 entity 和 concept""" - # 从所有 source 内容中提取 [[wikilinks]] import re wikilink_pattern = re.compile(r"\[\[([^\]]+)\]\]") @@ -245,11 +143,9 @@ def find_orphan_entity_concept(manifest: dict) -> tuple[list, list]: elif name.startswith("concepts/"): referenced_concepts.add(Path(name).stem) elif "/" not in name: - # 裸 wikilink,可能是 entity 或 concept referenced_entities.add(name) referenced_concepts.add(name) - # 检查 entity 目录 orphan_entities = [] entities_dir = WIKI_DIR / "entities" if entities_dir.exists(): @@ -257,7 +153,6 @@ def find_orphan_entity_concept(manifest: dict) -> tuple[list, list]: if f.stem not in referenced_entities: orphan_entities.append(f.name) - # 检查 concept 目录 orphan_concepts = [] concepts_dir = WIKI_DIR / "concepts" if concepts_dir.exists(): @@ -275,7 +170,6 @@ def check_changes(manifest: dict, raw_files: dict) -> dict: changes = {"new": [], "updated": [], "deleted": [], "unchanged": []} manifest_files = manifest.get("files", {}) - # 遍历当前 raw 文件 for rel_path, info in raw_files.items(): if rel_path not in manifest_files: changes["new"].append({"rel_path": rel_path, **info}) @@ -288,7 +182,6 @@ def check_changes(manifest: dict, raw_files: dict) -> dict: else: changes["unchanged"].append(rel_path) - # 遍历 manifest,找已删除的 for rel_path in manifest_files: abs_path = REPO_ROOT / rel_path if not abs_path.exists(): @@ -308,15 +201,12 @@ def run_sync(dry_run: bool = False, verbose: bool = False, json_mode: bool = Fal print(f" Wiki: {WIKI_DIR}\n") print(f" Mode: {'DRY-RUN (preview only)' if dry_run else 'LIVE SYNC'}") - # Step 1: load manifest manifest = load_manifest() log("manifest.json loaded", "info") - # Step 2: scan raw/ raw_files = scan_raw() log(f"raw/ scan: {len(raw_files)} .md files found", "info") - # Step 3: check changes changes = check_changes(manifest, raw_files) total_changes = len(changes["new"]) + len(changes["updated"]) + len(changes["deleted"]) @@ -324,7 +214,6 @@ def run_sync(dry_run: bool = False, verbose: bool = False, json_mode: bool = Fal log("No changes detected — wiki is up to date.", "success") return - # ─── Report ─── if not json_mode: print(f"\n{bold('--- Changes ---')}") print(f" {green('+')} New: {len(changes['new'])}") @@ -336,12 +225,9 @@ def run_sync(dry_run: bool = False, verbose: bool = False, json_mode: bool = Fal if not json_mode: print(f"\n {bold('New Files:')}") for f in changes["new"]: + slug = build_slug_from_path(f["rel_path"]) if json_mode: - print(json.dumps({ - "event": "new_detected", - "rel_path": f["rel_path"], - "slug": build_slug_from_path(f["rel_path"]), - })) + print(json.dumps({"event": "new_detected", "rel_path": f["rel_path"], "slug": slug})) else: log(f"{green('[+')} {f['rel_path']}", "normal") @@ -349,12 +235,9 @@ def run_sync(dry_run: bool = False, verbose: bool = False, json_mode: bool = Fal if not json_mode: print(f"\n {bold('Updated Files:')}") for f in changes["updated"]: + slug = manifest["files"].get(f["rel_path"], {}).get("slug") or build_slug_from_path(f["rel_path"]) if json_mode: - print(json.dumps({ - "event": "updated_detected", - "rel_path": f["rel_path"], - "slug": manifest["files"].get(f["rel_path"], {}).get("slug") or build_slug_from_path(f["rel_path"]), - })) + print(json.dumps({"event": "updated_detected", "rel_path": f["rel_path"], "slug": slug})) else: log(f"{yellow('[~]')} {f['rel_path']} (hash changed)", "normal") @@ -363,10 +246,7 @@ def run_sync(dry_run: bool = False, verbose: bool = False, json_mode: bool = Fal print(f"\n {bold('Deleted Files:')}") for f in changes["deleted"]: if json_mode: - print(json.dumps({ - "event": "deleted_detected", - "rel_path": f["rel_path"], - })) + print(json.dumps({"event": "deleted_detected", "rel_path": f["rel_path"]})) else: log(f"{red('[-]')} {f['rel_path']}", "normal") @@ -375,32 +255,24 @@ def run_sync(dry_run: bool = False, verbose: bool = False, json_mode: bool = Fal return # ─── Apply Sync ─── - # 注意:call_ingest 现在返回 needs_manual_tmux,提示 Hermes 通过 TMUX 手动执行 - # 这里只做 manifest 记录,不实际调用 Claude Code if not json_mode: print(f"\n{bold('--- Applying Sync ---')}") - print(" Note: Ingest execution requires manual TMUX workflow") - print(" Use llm-wiki-sync skill for actual ingestion") - print() updated_manifest = manifest.copy() updated_manifest["files"] = manifest.get("files", {}).copy() - # 标记新增和更新的文件为待处理(由 Hermes 手动执行) pending_files = [] - - # ① 新增 → 标记待处理 + + # ① 新增 → 加入 manifest for f in changes["new"]: rel_path = f["rel_path"] - abs_path = f["abs_path"] slug = build_slug_from_path(rel_path) - + if json_mode: print(json.dumps({"event": "pending", "rel_path": rel_path, "slug": slug, "action": "new"})) - - pending_files.append({"rel_path": rel_path, "abs_path": abs_path, "slug": slug, "action": "new"}) - - # 新文件加入 manifest,标记为待摄入 + + pending_files.append({"rel_path": rel_path, "abs_path": f["abs_path"], "slug": slug, "action": "new"}) + updated_manifest["files"][rel_path] = { "hash": f["hash"], "modified": f.get("modified"), @@ -409,39 +281,44 @@ def run_sync(dry_run: bool = False, verbose: bool = False, json_mode: bool = Fal "ingested": False, "ingested_at": None, } - - # ② 修改 → 标记待处理 + + # ② 修改 → 更新 manifest for f in changes["updated"]: rel_path = f["rel_path"] - abs_path = f["abs_path"] - old_slug = manifest["files"].get(rel_path, {}).get("slug") or build_slug_from_path(rel_path) - - if json_mode: - print(json.dumps({"event": "pending", "rel_path": rel_path, "slug": old_slug, "action": "updated"})) - - pending_files.append({"rel_path": rel_path, "abs_path": abs_path, "slug": old_slug, "action": "updated"}) + old_entry = manifest["files"].get(rel_path, {}) + slug = old_entry.get("slug") or build_slug_from_path(rel_path) - # ③ 删除 → 保留 wiki 内容,仅从 manifest 移除 + if json_mode: + print(json.dumps({"event": "pending", "rel_path": rel_path, "slug": slug, "action": "updated"})) + + pending_files.append({"rel_path": rel_path, "abs_path": f["abs_path"], "slug": slug, "action": "updated"}) + + updated_manifest["files"][rel_path] = { + **old_entry, + "hash": f["hash"], + "modified": f.get("modified"), + "ingested": False, + "ingested_at": None, + } + + # ③ 删除 → 保留 wiki 内容,从 manifest 移除 deleted_files = [] for f in changes["deleted"]: rel_path = f["rel_path"] source_path = f.get("source_path") - log(f"Deleted: {rel_path}", "warn") - if source_path: - sp = WIKI_DIR / source_path - log(f" Wiki source kept: {sp}", "warn") + if not json_mode: + log(f"Deleted: {rel_path}", "warn") + if source_path: + sp = WIKI_DIR / source_path + log(f" Wiki source kept: {sp}", "warn") if rel_path in updated_manifest["files"]: del updated_manifest["files"][rel_path] deleted_files.append(rel_path) - # Step 4: Save manifest(不保存 pending files,等待实际执行后更新) - # 注意:不再在 --sync 时自动更新 manifest,而是由 Hermes 手动更新 - # 这样可以追踪哪些文件需要处理 - # 只保存已删除的文件变更 + # 保存 manifest save_manifest(updated_manifest) log(f"\nmanifest.json updated ({len(updated_manifest['files'])} entries)", "success") - # 输出 pending files 列表,供 Hermes 手动执行 if json_mode: print(json.dumps({ "event": "sync_complete", @@ -454,7 +331,7 @@ def run_sync(dry_run: bool = False, verbose: bool = False, json_mode: bool = Fal "deleted_files": deleted_files, })) - # Step 5: Orphan detection + # Orphan detection orphan_entities, orphan_concepts = find_orphan_entity_concept(updated_manifest) if not json_mode: if orphan_entities or orphan_concepts: @@ -471,44 +348,43 @@ def run_sync(dry_run: bool = False, verbose: bool = False, json_mode: bool = Fal else: log("No orphan entity/concept detected.", "success") - # Step 6: JSON summary(已在上面输出 pending_files) - # 旧的 summary 输出已删除,因为不再自动执行 ingest print(f"\n{bold('Done.')}") - print(f"\n Pending files for manual TMUX ingestion: {len(pending_files)}") - print(" Use llm-wiki-sync skill to process these files.") + print(f"\n Pending files for ingestion: {len(pending_files)}") def run_check(): - """只预览变化,不执行""" + """只预览变化,不执行(输出为标准 Markdown)""" manifest = load_manifest() raw_files = scan_raw() changes = check_changes(manifest, raw_files) total = len(changes["new"]) + len(changes["updated"]) + len(changes["deleted"]) - print(f"\n{bold('=== Wiki Sync Check')} (preview mode)\n") - print(f" Raw files: {len(raw_files)}") - print(f" Manifest entries: {len(manifest.get('files', {}))}") - print(f" {green('+')} New: {len(changes['new'])}") - print(f" {yellow('~')} Updated: {len(changes['updated'])}") - print(f" {red('-')} Deleted: {len(changes['deleted'])}") + # Markdown header and summary + print("# Wiki Sync Check\n") + print(f"- Raw files: {len(raw_files)}") + print(f"- Manifest entries: {len(manifest.get('files', {}))}") + print(f"- New: {len(changes['new'])}") + print(f"- Updated: {len(changes['updated'])}") + print(f"- Deleted: {len(changes['deleted'])}\n") if total > 0: if changes["new"]: - print(f"\n {bold('New Files:')}") + print("## New Files") for f in changes["new"]: - print(f" {green('[+]')} {f['rel_path']}") + print(f"- {f['rel_path']}") + print() if changes["updated"]: - print(f"\n {bold('Updated Files:')}") + print("## Updated Files") for f in changes["updated"]: - print(f" {yellow('[~]')} {f['rel_path']} (was {f['old_hash']}, now {f['hash']})") + print(f"- {f['rel_path']} (was {f['old_hash']}, now {f['hash']})") + print() if changes["deleted"]: - print(f"\n {bold('Deleted Files:')}") + print("## Deleted Files") for f in changes["deleted"]: - print(f" {red('[-]')} {f['rel_path']}") + print(f"- {f['rel_path']}") + print() else: - print(f"\n {green('No changes — wiki is in sync.')}") - - print() + print("No changes — wiki is in sync.\n") def run_rebuild(): @@ -526,7 +402,6 @@ def run_rebuild(): ] files = manifest.get("files", {}) - # 按 modified 时间倒序 sorted_files = sorted(files.items(), key=lambda x: x[1].get("modified", ""), reverse=True) for rel_path, info in sorted_files: @@ -544,7 +419,6 @@ def run_rebuild(): index_file.write_text("".join(index_lines), encoding="utf-8") print(f" {green('✓')} index.md rebuilt with {len(sorted_files)} sources") - # Orphan report orphan_entities, orphan_concepts = find_orphan_entity_concept(manifest) if orphan_entities: print(f" {dim('?')} Orphan entities: {len(orphan_entities)}") @@ -557,8 +431,6 @@ def run_rebuild(): # ─── CLI 入口 ─────────────────────────────────────────────── if __name__ == "__main__": - import argparse - parser = argparse.ArgumentParser( description="Wiki ↔ Raw 三向同步工具", formatter_class=argparse.RawDescriptionHelpFormatter, @@ -598,20 +470,86 @@ if __name__ == "__main__": action="store_true", help="JSON 行输出模式(供调用方解析)", ) + parser.add_argument( + "--limit", + type=int, + default=None, + help="与 --pending --json 配合使用:限制返回的条目数(1 返回单条,>1 返回多条)。默认不限制(返回全部)。", + ) args = parser.parse_args() if args.rebuild: run_rebuild() elif args.pending: - # 列出待摄取的文件 manifest = load_manifest() - pending = [k for k, v in manifest["files"].items() if not v.get("ingested")] - print(f"=== Pending Ingest Files ({len(pending)}) ===\n") - for i, path in enumerate(pending, 1): - print(f"{i:3}. {path}") + pending = [(k, v) for k, v in manifest["files"].items() if not v.get("ingested")] + if args.json: + total = len(pending) + # 未指定 limit -> 返回全部(files 列表) + if args.limit is None: + payload = { + "event": "pending_list", + "count": total, + "files": [ + { + "rel_path": k, + "slug": v.get("slug", build_slug_from_path(k)), + "source_path": v.get("source_path"), + "modified": v.get("modified"), + "hash": v.get("hash"), + } + for k, v in pending + ], + } + elif args.limit <= 0: + payload = {"event": "pending_list", "count": total, "files": []} + elif args.limit == 1: + first = pending[0] if pending else (None, None) + if first[0] is None: + payload = {"event": "pending_list", "count": 0, "file": None} + else: + k, v = first + payload = { + "event": "pending_list", + "count": total, + "file": { + "rel_path": k, + "slug": v.get("slug", build_slug_from_path(k)), + "source_path": v.get("source_path"), + "modified": v.get("modified"), + "hash": v.get("hash"), + }, + } + else: + # 返回前 N 条 as files array + n = min(args.limit, total) + payload = { + "event": "pending_list", + "count": total, + "files": [ + { + "rel_path": k, + "slug": v.get("slug", build_slug_from_path(k)), + "source_path": v.get("source_path"), + "modified": v.get("modified"), + "hash": v.get("hash"), + } + for k, v in pending[:n] + ], + } + print(json.dumps(payload)) + else: + # 控制台输出也支持 --limit + total = len(pending) + n = total if args.limit is None else max(0, args.limit) + print(f"=== Pending Ingest Files ({total}) ===\n") + if n == 0: + print(" (no items to show)") + else: + for i, (path, info) in enumerate(pending[:n], 1): + print(f"{i:3}. {path}") elif args.reset_failed: - # 重置失败的 ingest 状态 manifest = load_manifest() reset_count = 0 for k, v in manifest["files"].items(): @@ -634,5 +572,5 @@ if __name__ == "__main__": print("\n示例:") print(" python tools/sync.py --check # 预览变化") print(" python tools/sync.py --sync # 执行同步") - print(" python tools/sync.py --sync -v # 详细模式") + print(" python tools/sync.py --sync -v # 详细模式") print(" python tools/sync.py --rebuild # 重建 index")