Skip to content

feat(self): build a searchable project skill - #95

Open
oritwoen wants to merge 2 commits into
mainfrom
feat/self-project-index
Open

feat(self): build a searchable project skill#95
oritwoen wants to merge 2 commits into
mainfrom
feat/self-project-index

Conversation

@oritwoen

Copy link
Copy Markdown
Collaborator

skilld self turns current workspace into a searchable project skill. It indexes source and docs, installs SKILL.md for selected agent, and makes skilld search "..." -p self return links back to real project files.

This is the useful one-shot part of #33. Watch mode can stay separate instead of blocking whole feature on file watcher.

@oritwoen oritwoen self-assigned this Aug 14, 2026
@harlan-github-agent

harlan-github-agent Bot commented Aug 14, 2026

Copy link
Copy Markdown

🤖 BLOCKED

Harlan Agent Kit posted this automated review. It is not Harlan's personal review or approval. AI open source policy. Human merge decision still required.

▓▓▓▓▓ 100%

  • Open: Persistent prompt injection: src/commands/self.ts:107..171 inserts untrusted project names, descriptions, and filenames into an auto-discovered SKILL.md. Lines 255..257 write it without the sanitizer used by normal skill generation.. Next: Parse and bound metadata, escape Markdown paths, sanitize the complete skill, and test malicious names, descriptions, and filenames.

  • Open: Invalid public skill output: line 180 uses sanitizeName, which permits dots, underscores, and 255 characters. Agent targets require 1 to 64 lowercase alphanumeric or hyphen characters. Descriptions also lack the 1024-character and angle-bra. Next: Use a specification-compliant skill identifier and bounded description. Test dotted, underscored, long, and angle-bracket inputs.

  • Open: Concurrent skilld self processes can corrupt or lose the last usable index. Lines 192..248 share fixed .next and .previous paths, delete them unconditionally, and provide no cross-process lock.. Next: Lock rebuilding per project, use unique temporary files, and atomically promote the completed database. Add a concurrent-builder regression test.

  • Open: Interactive self search prints a nonexistent path after selection. src/commands/search-interactive.ts:242 ignores referenceRoot and always emits a .claude path, although the result list uses the correct Codex or shared path.. Next: Reuse the referenceRoot-aware path formatter for selected results and test interactive selection output.

  • Open: The reserved self filter is not exclusive. src/commands/search-helpers.ts:18..22 still passes self into dependency matching, so packages such as selfsigned are searched alongside the project index.. Next: Return only the project database for the exact self filter. Add a lockfile regression containing a self-prefixed package.

@harlan-zw harlan-zw added the harlan-agent-review Approve automated work for the current issue state or pull request head commit. label Aug 14, 2026
@harlan-github-agent harlan-github-agent Bot removed the harlan-agent-review Approve automated work for the current issue state or pull request head commit. label Aug 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants