Files
company-kb/tools/kb-init.sh
yangqianqian 84f7950589 Initial commit: company-kb framework
- 完整的知识库框架(P0-P5 路线图)
- 12篇治理文档
- 工具脚本(kb-init.sh, kb-lint-fm.py, feishu-sync.py, kb-bot)
- 7个 Claude 命令
- 示例项目和测试项目(wanniu-l1)
- 契约文件(meta/kb-contract.yaml)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-16 18:24:39 +08:00

81 lines
2.4 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
# kb-init.sh —— 幂等建项目骨架
# 用法:
# bash tools/kb-init.sh <代号> # 建 projects/<代号>/ 骨架 + _index.md(type: project, status: seed)
# bash tools/kb-init.sh --stats # 打印源计数(更新 meta/stats.md 参考值)
# 约束: <代号> 用英文/拼音禁纯中文目录名Claude Code 会把中文编码为 - 导致碰撞)。
set -euo pipefail
# 定位库根(本脚本在 tools/ 下)
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
usage() { grep '^#' "$0" | sed 's/^# \{0,1\}//'; exit "${1:-0}"; }
# ── --stats: 红线观察点 ──
if [[ "${1:-}" == "--stats" ]]; then
proj=$(find "$ROOT/projects" -mindepth 1 -maxdepth 1 -type d ! -name '_example' 2>/dev/null | wc -l | tr -d ' ')
pages=$(grep -rl '^type:' "$ROOT/projects" "$ROOT/entities" "$ROOT/concepts" "$ROOT/questions" 2>/dev/null | wc -l | tr -d ' ')
srcs=$(grep -rh '^source_link:' "$ROOT/projects" 2>/dev/null | sort -u | wc -l | tr -d ' ')
echo "项目数: $proj | 知识页数: $pages | 外部源数(去重): $srcs"
exit 0
fi
CODE="${1:-}"
[[ -z "$CODE" || "$CODE" == "-h" || "$CODE" == "--help" ]] && usage 0
# 中文目录名保护
if echo "$CODE" | LC_ALL=C grep -q '[^ -~]'; then
echo "错误: 代号 '$CODE' 含非 ASCII 字符。请用英文/拼音(禁纯中文目录名)。" >&2
exit 1
fi
PDIR="$ROOT/projects/$CODE"
if [[ -d "$PDIR" ]]; then
echo "项目已存在: projects/$CODE (幂等:不覆盖,仅补齐缺失子目录)"
fi
mkdir -p "$PDIR"/{docs,decisions,conversations,assets}
for sub in docs assets; do [[ -f "$PDIR/$sub/.gitkeep" ]] || touch "$PDIR/$sub/.gitkeep"; done
INDEX="$PDIR/_index.md"
if [[ -f "$INDEX" ]]; then
echo "保留已有 _index.md幂等: projects/$CODE/_index.md"
else
TODAY="$(date +%F)"
cat > "$INDEX" <<EOF
---
type: project
title: "$CODE"
description:
status: seed
created: $TODAY
ingested: $TODAY
tags: []
related: []
---
# $CODE
## 概览
一句话说明本项目是什么、当前在做什么。
## 进展
-
## 关键决策
(见 decisions/,用 [[slug]] 链接)
## 需求方 / 参与人
-
## 资料索引
- docs/ :外部汇入文档
- conversations/ :聊天沉淀
- decisions/ :决策记录
EOF
echo "已创建: projects/$CODE/_index.md (type: project, status: seed)"
fi
echo "骨架就绪: projects/$CODE/{docs,decisions,conversations,assets}"
echo "下一步: 丢资料 + 一句说明,或运行 kb-lint-fm.py 校验。"