敏捷骨架
向LLM提供您的代码库的全貌,而不提供完整的源代码。
为什么是骷髅?
LLM编码代理探索代码库的方式与开发人员加入新项目的方式相同。它不需要阅读每一行——它需要先看到形状:存在什么类型,它们公开了什么方法,它们彼此之间的关系,以及在哪里找到它们。
这个形状就是 骨架 --没有实现的声明。就像看一栋建筑的蓝图,而不是走过每个房间。
swiftskeleton会自动提取此骨架:类型声明、属性、方法签名、继承、文件路径和行号。结果适合一个上下文窗口,而完整的源代码永远不会出现。LLM读取骨架,理解架构,然后只深入到它实际需要的文件中。
struct SkeletonIndexCore: Sendable [Sources/SkeletonIndexCore/SkeletonIndexCore.swift:3-246]
props: parsers:[any SkeletonParser], formatter:SkeletonFormatter
methods:
init([any SkeletonParser], SkeletonFormatter) [7-10]
build(String) -> ProjectIndex [16-45]
getSkeleton(ProjectIndex, String?) -> SkeletonTextResult [57-62]
query(ProjectIndex, String, Int) -> [QueryHit] [97-139]仅凭这一点,法学硕士就可以立即理解:
SkeletonIndexCore是一个Sendable结构- 它通过DI调用解析器,并使用
build - 结果通过以下方式检索
getSkeleton和query - 实施生活在
SkeletonIndexCore.swift第3行至第246行
建立在 树保姆 用于快速、准确的解析。
支持的语言
Swift、Kotlin、TypeScript、Go、Zig、Rust、C++、Python、Java
每个语言解析器都可以通过以下方式选择 包装特点(SE-0450).构建 --disable-default-traits 仅限Swift。
安装
薄荷(推荐)
mint install 1amageek/swift-skeleton从源代码构建
git clone https://github.com/1amageek/swift-skeleton.git
cd swift-skeleton
swift build -c release代理技能
快速骨架船 代理技能 在 SKILLS/skeleton/该技能教LLM编码代理(Claude Code、Codex)如何使用骨架提取——在代理开始探索文件之前,为其提供任何项目的结构概述。
SKILLS/skeleton/
├── SKILL.md # Core instructions
└── references/
├── cli.md # CLI commands and filters
└── output-format.md # Output format specification通过CLI安装
skltn install-skill这将技能复制到 ~/.claude/skills/skeleton/ 和 ~/.codex/skills/skeleton/ (无论有什么工具)。
手动安装
复制 SKILLS/skeleton/ 文件夹到工具的技能目录:
cp -r SKILLS/skeleton ~/.claude/skills/skeleton用法
# Explicit invocation
/skeleton /path/to/project
# The agent can also invoke it automatically before code exploration命令行界面
# Full project skeleton
skltn skeleton /path/to/project
# Single file skeleton
skltn skeleton /path/to/project --path Sources/MyFile.swift
# Compact project map
skltn skeleton /path/to/project --headers-only
# Filter by language or declaration kind
skltn skeleton /path/to/project --language swift
skltn skeleton /path/to/project --kinds struct,actor
# Symbol search
skltn query /path/to/project --q "MyClass" --limit 10
# Project status and diagnostics
skltn status /path/to/project
skltn diagnostics /path/to/project
skltn files /path/to/project
skltn languages
# Install agent skill (Claude Code / Codex)
skltn install-skill
# JSON-RPC daemon (stdin/stdout)
skltn daemonget_skeleton 和 build 是的别名 skeleton. search 是的别名 query,以及 diag 是的别名 diagnostics.
建筑
SkeletonIndexCore Language-agnostic core (protocols, models, formatter, index)
SkeletonSwiftParser Swift parser (Tree-sitter)
SkeletonKotlinParser Kotlin parser (Tree-sitter)
SkeletonTypeScriptParser TypeScript parser (Tree-sitter)
SkeletonGoParser Go parser (Tree-sitter)
SkeletonZigParser Zig parser (Tree-sitter)
SkeletonRustParser Rust parser (Tree-sitter)
SkeletonCppParser C++ parser (Tree-sitter)
SkeletonPythonParser Python parser (indent-based AST)
SkeletonJavaParser Java parser (Tree-sitter)
SkeletonIndexClient EmbeddedService / SidecarService
skltn CLI / JSON-RPC daemon核心对Tree sitter没有任何依赖。解析器通过 SkeletonParser 协议。
添加新语言
实施 SkeletonParser 并注射:
public protocol SkeletonParser: Sendable {
var languageName: String { get }
var supportedExtensions: Set { get }
func parse(path: String, source: String) -> ParsedFile
}
let core = SkeletonIndexCore(parsers: [
SwiftSkeletonParser(),
YourLanguageParser(),
])图书馆使用情况
嵌入式(进程中)
import SkeletonIndexCore
import SkeletonSwiftParser
let core = SkeletonIndexCore(parsers: [SwiftSkeletonParser()])
let index = try core.build(projectRoot: "/path/to/project")
let skeleton = core.getSkeleton(index: index)
print(skeleton.text)
let hits = core.query(index: index, q: "MyType", limit: 10)侧车(未加工)
import SkeletonIndexClient
let service = SidecarService()
let result = try await service.open(projectRoot: "/path/to/project", languages: ["swift"])
let skeleton = try await service.getSkeleton(projectID: result.projectID, path: nil)JSON-RPC守护程序
skltn daemon方法: index.open, index.status, index.get_skeleton, index.update, index.query, index.diagnostics
需求
- Swift 6.2+
- macOS 13+
许可证
麻省理工学院
