chore: add research-link skill, rename to SKILL.md#101
Conversation
- Add /research-link skill for evaluating external links, tools, and concepts against the ai-company project - Rename all skill.md files to uppercase SKILL.md for cross-platform compatibility (case-sensitive filesystems require uppercase) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (3)
📝 WalkthroughSummary by CodeRabbit
WalkthroughIntroduces a new skill documentation file for "Research Link" under Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Dependency Review✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.Scanned FilesNone |
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request significantly enhances the project's capabilities by integrating a powerful new research skill, enabling systematic evaluation of external information. Concurrently, it improves system robustness and portability by standardizing skill file naming conventions to prevent potential loading failures across different operating systems. Highlights
Changelog
Activity
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request introduces a new research-link skill and standardizes skill filenames to SKILL.md for better cross-platform compatibility. The new skill is well-defined and provides a comprehensive workflow for researching external content.
My review focuses on the new skill definition. I've identified a significant issue with hardcoded, user-specific file paths in the skill's logic for accessing project memory. This will prevent the skill from working for any other user or on any other system. I've left two comments with high severity to address this portability issue. Once these paths are made dynamic, the new skill should be a great addition.
Note: Security Review has been skipped due to the limited scope of the PR.
| 1. **DESIGN_SPEC.md** — Grep for related sections (memory, providers, communication, agents, etc.) | ||
| 2. **Source code** — Grep `src/ai_company/` for overlapping implementations or modules | ||
| 3. **CLAUDE.md** — Check for relevant conventions, decisions, or constraints | ||
| 4. **Memory files** — Grep `~/.claude/projects/C--Users-Aurelio-ai-company/memory/` for prior research on same or related topics |
There was a problem hiding this comment.
The file path for memory files is hardcoded to a user-specific path (~/.claude/projects/C--Users-Aurelio-ai-company/memory/). This makes the skill non-portable and will fail for other users or on different systems, as their project path and corresponding Claude memory directory will be different.
This path should be determined dynamically. The Claude environment likely provides a variable (e.g., $CLAUDE_PROJECT_DIR or similar) that points to the correct project-specific directory. Please use such a variable to construct the path to the memory files.
| **Always** (regardless of user choice): append a one-liner to `~/.claude/projects/C--Users-Aurelio-ai-company/memory/research-log.md`: | ||
|
|
||
| ``` | ||
| | YYYY-MM-DD | [Title](URL) | VERDICT | Relevant areas | One-line summary | | ||
| ``` | ||
|
|
||
| Create the file with a header row if it doesn't exist yet. | ||
|
|
||
| **If user chooses "Save findings to memory"**: write a detailed file to `~/.claude/projects/C--Users-Aurelio-ai-company/memory/research/` with the full analysis in under 40 lines. Use a slugified filename based on the topic. |
There was a problem hiding this comment.
Similar to the previous comment, the paths for the research log and detailed memory files are hardcoded to a user-specific path (~/.claude/projects/C--Users-Aurelio-ai-company/memory/...). This will cause the skill to fail on any other machine or for any other user.
Please replace the hardcoded path with a dynamic approach, likely using an environment variable provided by the Claude environment to locate the project's memory directory.
Greptile SummaryThis PR adds the The new skill is well-structured and clearly decision-oriented. The implementation fixes previously flagged cross-platform issues (Windows-specific memory paths) and the 4-option limit constraint (now properly capped and documented). However, three refinements would improve reliability and security before production use:
Confidence Score: 3/5
Sequence DiagramsequenceDiagram
actor User
participant Skill as research-link skill
participant Fetch as WebFetch and WebSearch
participant Codebase as Read and Grep and Glob
participant Memory as Auto Memory Dir
participant UI as AskUserQuestion
User->>Skill: invoke with url or name or concept
Note over Skill: Phase 1 - Acquire Content
Skill->>Fetch: primary fetch
alt fetch fails
Skill->>Fetch: fallback search
end
Skill->>Fetch: supplementary fetches in parallel (max 4)
Note over Skill: Phase 2 - Extract Core Ideas
Skill->>Skill: extract technical details and claims
Note over Skill: Phase 3 - Map to Project
par parallel cross-reference
Skill->>Codebase: grep DESIGN_SPEC.md
and
Skill->>Codebase: grep src/ai_company
and
Skill->>Codebase: read CLAUDE.md and pyproject.toml
and
Skill->>Memory: grep prior research notes
end
Note over Skill: Phase 4 - Assign Verdicts
Skill->>Skill: assign USE or ADAPT or REPLACE or RETHINK or LATER or SKIP
Note over Skill: Phase 5 - Present Results
Skill->>User: verdicts table and risks and sources
Note over Skill: Phase 6 - User Decision
Skill->>UI: ask how to proceed (2 to 4 options)
UI->>User: show options
User->>UI: select choice
alt save findings to memory
Skill->>Memory: append to research-log.md
Skill->>Memory: write detailed file to research subdirectory
else note and move on
Skill->>Memory: append one-liner to research-log.md
else act on recommendations
Skill->>User: follow-up to create issues or implement
else explore deeper
Skill->>Fetch: deep-dive on top ADAPT or LATER item
end
Last reviewed commit: a20d400 |
| - Glob | ||
| - Agent | ||
| - AskUserQuestion | ||
| - Bash |
There was a problem hiding this comment.
Bash tool is listed but not used
Bash appears in allowed-tools but no phase in the skill actually requires shell execution. All content acquisition uses WebFetch/WebSearch, local file access uses Read/Grep/Glob, and the only shell reference is the optional parenthetical "(or gh api if it's on GitHub)" which is not a required step.
Keeping unused tools unnecessarily widens the privilege surface. Remove Bash from the tool list unless a concrete shell step is added to the instructions.
Prompt To Fix With AI
This is a comment left during a code review.
Path: .claude/skills/research-link/SKILL.md
Line: 14
Comment:
**`Bash` tool is listed but not used**
`Bash` appears in `allowed-tools` but no phase in the skill actually requires shell execution. All content acquisition uses `WebFetch`/`WebSearch`, local file access uses `Read`/`Grep`/`Glob`, and the only shell reference is the optional parenthetical "(or `gh api` if it's on GitHub)" which is not a required step.
Keeping unused tools unnecessarily widens the privilege surface. Remove `Bash` from the tool list unless a concrete shell step is added to the instructions.
How can I resolve this? If you propose a fix, please make it concise.There was a problem hiding this comment.
Pull request overview
Adds a new Claude skill for research/tech-evaluation workflows and standardizes skill documentation filenames to SKILL.md to avoid case-sensitivity issues across filesystems.
Changes:
- Add
/research-linkskill with a structured workflow for fetching sources, mapping to the codebase, and producing actionable verdicts. - Rename/standardize existing skill docs to
SKILL.md(case normalization for cross-platform reliability). - Add/refresh operational “post-merge cleanup” and “PR review” skill instructions under the standardized filename.
Reviewed changes
Copilot reviewed 1 out of 3 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
.claude/skills/research-link/SKILL.md |
New research workflow skill (fetch, extract, map to project, verdicts, memory logging). |
.claude/skills/post-merge-cleanup/SKILL.md |
Post-merge local git cleanup instructions under standardized filename. |
.claude/skills/aurelio-review-pr/SKILL.md |
End-to-end PR review pipeline skill under standardized filename. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| 1. **DESIGN_SPEC.md** — Grep for related sections (memory, providers, communication, agents, etc.) | ||
| 2. **Source code** — Grep `src/ai_company/` for overlapping implementations or modules | ||
| 3. **CLAUDE.md** — Check for relevant conventions, decisions, or constraints | ||
| 4. **Memory files** — Grep `~/.claude/projects/C--Users-Aurelio-ai-company/memory/` for prior research on same or related topics |
There was a problem hiding this comment.
The skill hard-codes a machine-specific Claude project memory path (~/.claude/projects/C--Users-Aurelio-ai-company/...). This will not work for other developers or on non-Windows setups, and conflicts with the repo’s guidance to avoid embedding user-specific absolute paths. Use a project-agnostic way to locate the current project’s memory directory (e.g., derive from the current project name/path or use whatever Claude-provided project env var exists) and reference that instead.
| 4. **Memory files** — Grep `~/.claude/projects/C--Users-Aurelio-ai-company/memory/` for prior research on same or related topics | |
| 4. **Memory files** — Grep this project's Claude memory directory (for example, `~/.claude/projects/<your-project-id>/memory/`) for prior research on the same or related topics |
| **Always** (regardless of user choice): append a one-liner to `~/.claude/projects/C--Users-Aurelio-ai-company/memory/research-log.md`: | ||
|
|
||
| ``` | ||
| | YYYY-MM-DD | [Title](URL) | VERDICT | Relevant areas | One-line summary | | ||
| ``` | ||
|
|
||
| Create the file with a header row if it doesn't exist yet. | ||
|
|
||
| **If user chooses "Save findings to memory"**: write a detailed file to `~/.claude/projects/C--Users-Aurelio-ai-company/memory/research/` with the full analysis in under 40 lines. Use a slugified filename based on the topic. | ||
|
|
There was a problem hiding this comment.
These instructions hard-code a per-user Claude memory path for writing the research log and detailed notes. That makes the skill non-portable and likely to fail for anyone whose Claude project directory name differs. Use a project-agnostic memory location (or instructions to compute it) so the skill works on Linux/macOS/Windows without editing paths.
| ### Verdict Rules | ||
|
|
||
| - Every verdict must reference a specific part of the project (module, design section, convention) | ||
| - **USE** and **REPLACE** require license check (must be compatible with BUSL-1.1 / Apache 2.0) |
There was a problem hiding this comment.
The license-check rule is underspecified and may not match the repo’s actual dependency license policy (there is an explicit allow-list in the Dependency Review workflow). Consider pointing the skill at the allow-list (and/or CLAUDE.md’s dependency review notes) so recommendations don’t inadvertently approve a license CI will reject, or reject licenses that are actually allowed.
| - **USE** and **REPLACE** require license check (must be compatible with BUSL-1.1 / Apache 2.0) | |
| - **USE** and **REPLACE** require a license check against the repo’s official dependency policy (use the Dependency Review workflow’s allow-list and the dependency review notes in `CLAUDE.md`; do not recommend anything CI would reject) |
- Replace hardcoded Windows-specific memory paths with generic references to the project's auto memory directory (lines 90, 163, 171) - Collapse Phase 6 action options to stay within AskUserQuestion's 4-option limit (lines 148-158) - Improve license check rule to reference repo's dependency review allow-list (line 114) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
| - Edit | ||
| - Grep | ||
| - Glob | ||
| - Agent |
There was a problem hiding this comment.
Agent is included in allowed-tools but no phase in the skill ever instructs the model to invoke it. Unlike other tools with explicit usage patterns, Agent spawns sub-agents that inherit the full tool set — making it the highest-privilege tool here. Listing it without defined usage patterns gives the model latitude to spin up arbitrary sub-agents for tasks that could be accomplished with direct parallel tool calls.
The "Launch supplementary fetches in parallel" instruction in Phase 1 and the "Search these in parallel" in Phase 3 are achievable with native parallel tool calls (multiple WebFetch/Grep calls in a single response) — no Agent sub-agent is needed.
Consider removing Agent unless a specific phase explicitly requires multi-turn sub-agent delegation.
| - Agent | |
| - AskUserQuestion |
Prompt To Fix With AI
This is a comment left during a code review.
Path: .claude/skills/research-link/SKILL.md
Line: 12
Comment:
`Agent` is included in `allowed-tools` but no phase in the skill ever instructs the model to invoke it. Unlike other tools with explicit usage patterns, `Agent` spawns sub-agents that inherit the full tool set — making it the highest-privilege tool here. Listing it without defined usage patterns gives the model latitude to spin up arbitrary sub-agents for tasks that could be accomplished with direct parallel tool calls.
The "Launch supplementary fetches **in parallel**" instruction in Phase 1 and the "Search these in parallel" in Phase 3 are achievable with native parallel tool calls (multiple `WebFetch`/`Grep` calls in a single response) — no `Agent` sub-agent is needed.
Consider removing `Agent` unless a specific phase explicitly requires multi-turn sub-agent delegation.
```suggestion
- AskUserQuestion
```
How can I resolve this? If you propose a fix, please make it concise.|
|
||
| Research any external content — URL, tool, concept, pasted article, code snippet — and evaluate what it means for the ai-company project. Produces a decision-oriented assessment with concrete verdicts and next-step options. | ||
|
|
||
| **Arguments:** "$ARGUMENTS" |
There was a problem hiding this comment.
If the user invokes /research-link with no arguments, $ARGUMENTS is empty and Phase 1 immediately tries to classify the input — but none of the five rows in the detection table match an empty string. The skill has no recovery path and will likely hallucinate an input type or stall.
Since <url, tool name, concept, or pasted content> is documented as a required argument, add an explicit empty-argument guard before Phase 1:
| **Arguments:** "$ARGUMENTS" | |
| **Arguments:** "$ARGUMENTS" | |
| > If `$ARGUMENTS` is empty, use `AskUserQuestion` to ask the user what they want to research (a URL, tool name, concept, or pasted content) before proceeding to Phase 1. |
Prompt To Fix With AI
This is a comment left during a code review.
Path: .claude/skills/research-link/SKILL.md
Line: 21
Comment:
If the user invokes `/research-link` with no arguments, `$ARGUMENTS` is empty and Phase 1 immediately tries to classify the input — but none of the five rows in the detection table match an empty string. The skill has no recovery path and will likely hallucinate an input type or stall.
Since `<url, tool name, concept, or pasted content>` is documented as a required argument, add an explicit empty-argument guard before Phase 1:
```suggestion
**Arguments:** "$ARGUMENTS"
> If `$ARGUMENTS` is empty, use `AskUserQuestion` to ask the user what they want to research (a URL, tool name, concept, or pasted content) before proceeding to Phase 1.
```
How can I resolve this? If you propose a fix, please make it concise.|
|
||
| ``` | ||
| | YYYY-MM-DD | [Title](URL) | VERDICT | Relevant areas | One-line summary | | ||
| ``` | ||
|
|
||
| Create the file with a header row if it doesn't exist yet. |
There was a problem hiding this comment.
The skill says "Create the file with a header row if it doesn't exist yet" but only provides the data row template — it never specifies what the header itself should look like. The model will have to guess, potentially producing inconsistent headers across machines or sessions.
Consider explicitly defining the header:
| ``` | |
| | YYYY-MM-DD | [Title](URL) | VERDICT | Relevant areas | One-line summary | | |
| ``` | |
| Create the file with a header row if it doesn't exist yet. | |
| **Always** (regardless of user choice): append a one-liner to `research-log.md` in the project's auto memory directory: | |
| Date | Source | Verdict | Relevant Areas | Summary |
|---|
Create the file with the above header row if it doesn't exist yet. Then append the new entry:
| YYYY-MM-DD | Title | VERDICT | Relevant areas | One-line summary |
Prompt To Fix With AI
This is a comment left during a code review.
Path: .claude/skills/research-link/SKILL.md
Line: 163-168
Comment:
The skill says "Create the file with a header row if it doesn't exist yet" but only provides the data row template — it never specifies what the header itself should look like. The model will have to guess, potentially producing inconsistent headers across machines or sessions.
Consider explicitly defining the header:
```suggestion
**Always** (regardless of user choice): append a one-liner to `research-log.md` in the project's auto memory directory:
```
| Date | Source | Verdict | Relevant Areas | Summary |
|------|--------|---------|----------------|---------|
```
Create the file with the above header row if it doesn't exist yet. Then append the new entry:
```
| YYYY-MM-DD | [Title](URL) | VERDICT | Relevant areas | One-line summary |
```
```
How can I resolve this? If you propose a fix, please make it concise.🤖 I have created a release *beep* *boop* --- ## [0.1.1](ai-company-v0.1.0...ai-company-v0.1.1) (2026-03-10) ### Features * add autonomy levels and approval timeout policies ([#42](#42), [#126](#126)) ([#197](#197)) ([eecc25a](eecc25a)) * add CFO cost optimization service with anomaly detection, reports, and approval decisions ([#186](#186)) ([a7fa00b](a7fa00b)) * add code quality toolchain (ruff, mypy, pre-commit, dependabot) ([#63](#63)) ([36681a8](36681a8)) * add configurable cost tiers and subscription/quota-aware tracking ([#67](#67)) ([#185](#185)) ([9baedfa](9baedfa)) * add container packaging, Docker Compose, and CI pipeline ([#269](#269)) ([435bdfe](435bdfe)), closes [#267](#267) * add coordination error taxonomy classification pipeline ([#146](#146)) ([#181](#181)) ([70c7480](70c7480)) * add cost-optimized, hierarchical, and auction assignment strategies ([#175](#175)) ([ce924fa](ce924fa)), closes [#173](#173) * add design specification, license, and project setup ([8669a09](8669a09)) * add env var substitution and config file auto-discovery ([#77](#77)) ([7f53832](7f53832)) * add FastestStrategy routing + vendor-agnostic cleanup ([#140](#140)) ([09619cb](09619cb)), closes [#139](#139) * add HR engine and performance tracking ([#45](#45), [#47](#47)) ([#193](#193)) ([2d091ea](2d091ea)) * add issue auto-search and resolution verification to PR review skill ([#119](#119)) ([deecc39](deecc39)) * add memory retrieval, ranking, and context injection pipeline ([#41](#41)) ([873b0aa](873b0aa)) * add pluggable MemoryBackend protocol with models, config, and events ([#180](#180)) ([46cfdd4](46cfdd4)) * add pluggable MemoryBackend protocol with models, config, and events ([#32](#32)) ([46cfdd4](46cfdd4)) * add pluggable PersistenceBackend protocol with SQLite implementation ([#36](#36)) ([f753779](f753779)) * add progressive trust and promotion/demotion subsystems ([#43](#43), [#49](#49)) ([3a87c08](3a87c08)) * add retry handler, rate limiter, and provider resilience ([#100](#100)) ([b890545](b890545)) * add SecOps security agent with rule engine, audit log, and ToolInvoker integration ([#40](#40)) ([83b7b6c](83b7b6c)) * add shared org memory and memory consolidation/archival ([#125](#125), [#48](#48)) ([4a0832b](4a0832b)) * design unified provider interface ([#86](#86)) ([3e23d64](3e23d64)) * expand template presets, rosters, and add inheritance ([#80](#80), [#81](#81), [#84](#84)) ([15a9134](15a9134)) * implement agent runtime state vs immutable config split ([#115](#115)) ([4cb1ca5](4cb1ca5)) * implement AgentEngine core orchestrator ([#11](#11)) ([#143](#143)) ([f2eb73a](f2eb73a)) * implement basic tool system (registry, invocation, results) ([#15](#15)) ([c51068b](c51068b)) * implement built-in file system tools ([#18](#18)) ([325ef98](325ef98)) * implement communication foundation — message bus, dispatcher, and messenger ([#157](#157)) ([8e71bfd](8e71bfd)) * implement company template system with 7 built-in presets ([#85](#85)) ([cbf1496](cbf1496)) * implement conflict resolution protocol ([#122](#122)) ([#166](#166)) ([e03f9f2](e03f9f2)) * implement core entity and role system models ([#69](#69)) ([acf9801](acf9801)) * implement crash recovery with fail-and-reassign strategy ([#149](#149)) ([e6e91ed](e6e91ed)) * implement engine extensions — Plan-and-Execute loop and call categorization ([#134](#134), [#135](#135)) ([#159](#159)) ([9b2699f](9b2699f)) * implement enterprise logging system with structlog ([#73](#73)) ([2f787e5](2f787e5)) * implement graceful shutdown with cooperative timeout strategy ([#130](#130)) ([6592515](6592515)) * implement hierarchical delegation and loop prevention ([#12](#12), [#17](#17)) ([6be60b6](6be60b6)) * implement LiteLLM driver and provider registry ([#88](#88)) ([ae3f18b](ae3f18b)), closes [#4](#4) * implement LLM decomposition strategy and workspace isolation ([#174](#174)) ([aa0eefe](aa0eefe)) * implement meeting protocol system ([#123](#123)) ([ee7caca](ee7caca)) * implement message and communication domain models ([#74](#74)) ([560a5d2](560a5d2)) * implement model routing engine ([#99](#99)) ([d3c250b](d3c250b)) * implement parallel agent execution ([#22](#22)) ([#161](#161)) ([65940b3](65940b3)) * implement per-call cost tracking service ([#7](#7)) ([#102](#102)) ([c4f1f1c](c4f1f1c)) * implement personality injection and system prompt construction ([#105](#105)) ([934dd85](934dd85)) * implement single-task execution lifecycle ([#21](#21)) ([#144](#144)) ([c7e64e4](c7e64e4)) * implement subprocess sandbox for tool execution isolation ([#131](#131)) ([#153](#153)) ([3c8394e](3c8394e)) * implement task assignment subsystem with pluggable strategies ([#172](#172)) ([c7f1b26](c7f1b26)), closes [#26](#26) [#30](#30) * implement task decomposition and routing engine ([#14](#14)) ([9c7fb52](9c7fb52)) * implement Task, Project, Artifact, Budget, and Cost domain models ([#71](#71)) ([81eabf1](81eabf1)) * implement tool permission checking ([#16](#16)) ([833c190](833c190)) * implement YAML config loader with Pydantic validation ([#59](#59)) ([ff3a2ba](ff3a2ba)) * implement YAML config loader with Pydantic validation ([#75](#75)) ([ff3a2ba](ff3a2ba)) * initialize project with uv, hatchling, and src layout ([39005f9](39005f9)) * initialize project with uv, hatchling, and src layout ([#62](#62)) ([39005f9](39005f9)) * Litestar REST API, WebSocket feed, and approval queue (M6) ([#189](#189)) ([29fcd08](29fcd08)) * make TokenUsage.total_tokens a computed field ([#118](#118)) ([c0bab18](c0bab18)), closes [#109](#109) * parallel tool execution in ToolInvoker.invoke_all ([#137](#137)) ([58517ee](58517ee)) * testing framework, CI pipeline, and M0 gap fixes ([#64](#64)) ([f581749](f581749)) * wire all modules into observability system ([#97](#97)) ([f7a0617](f7a0617)) ### Bug Fixes * address Greptile post-merge review findings from PRs [#170](https://github.com/Aureliolo/ai-company/issues/170)-[#175](https://github.com/Aureliolo/ai-company/issues/175) ([#176](#176)) ([c5ca929](c5ca929)) * address post-merge review feedback from PRs [#164](https://github.com/Aureliolo/ai-company/issues/164)-[#167](https://github.com/Aureliolo/ai-company/issues/167) ([#170](#170)) ([3bf897a](3bf897a)), closes [#169](#169) * enforce strict mypy on test files ([#89](#89)) ([aeeff8c](aeeff8c)) * harden Docker sandbox, MCP bridge, and code runner ([#50](#50), [#53](#53)) ([d5e1b6e](d5e1b6e)) * harden git tools security + code quality improvements ([#150](#150)) ([000a325](000a325)) * harden subprocess cleanup, env filtering, and shutdown resilience ([#155](#155)) ([d1fe1fb](d1fe1fb)) * incorporate post-merge feedback + pre-PR review fixes ([#164](#164)) ([c02832a](c02832a)) * pre-PR review fixes for post-merge findings ([#183](#183)) ([26b3108](26b3108)) * strengthen immutability for BaseTool schema and ToolInvoker boundaries ([#117](#117)) ([7e5e861](7e5e861)) ### Performance * harden non-inferable principle implementation ([#195](#195)) ([02b5f4e](02b5f4e)), closes [#188](#188) ### Refactoring * adopt NotBlankStr across all models ([#108](#108)) ([#120](#120)) ([ef89b90](ef89b90)) * extract _SpendingTotals base class from spending summary models ([#111](#111)) ([2f39c1b](2f39c1b)) * harden BudgetEnforcer with error handling, validation extraction, and review fixes ([#182](#182)) ([c107bf9](c107bf9)) * harden personality profiles, department validation, and template rendering ([#158](#158)) ([10b2299](10b2299)) * pre-PR review improvements for ExecutionLoop + ReAct loop ([#124](#124)) ([8dfb3c0](8dfb3c0)) * split events.py into per-domain event modules ([#136](#136)) ([e9cba89](e9cba89)) ### Documentation * add ADR-001 memory layer evaluation and selection ([#178](#178)) ([db3026f](db3026f)), closes [#39](#39) * add agent scaling research findings to DESIGN_SPEC ([#145](#145)) ([57e487b](57e487b)) * add CLAUDE.md, contributing guide, and dev documentation ([#65](#65)) ([55c1025](55c1025)), closes [#54](#54) * add crash recovery, sandboxing, analytics, and testing decisions ([#127](#127)) ([5c11595](5c11595)) * address external review feedback with MVP scope and new protocols ([#128](#128)) ([3b30b9a](3b30b9a)) * expand design spec with pluggable strategy protocols ([#121](#121)) ([6832db6](6832db6)) * finalize 23 design decisions (ADR-002) ([#190](#190)) ([8c39742](8c39742)) * update project docs for M2.5 conventions and add docs-consistency review agent ([#114](#114)) ([99766ee](99766ee)) ### Tests * add e2e single agent integration tests ([#24](#24)) ([#156](#156)) ([f566fb4](f566fb4)) * add provider adapter integration tests ([#90](#90)) ([40a61f4](40a61f4)) ### CI/CD * add Release Please for automated versioning and GitHub Releases ([#278](#278)) ([a488758](a488758)) * bump actions/checkout from 4 to 6 ([#95](#95)) ([1897247](1897247)) * bump actions/upload-artifact from 4 to 7 ([#94](#94)) ([27b1517](27b1517)) * harden CI/CD pipeline ([#92](#92)) ([ce4693c](ce4693c)) * split vulnerability scans into critical-fail and high-warn tiers ([#277](#277)) ([aba48af](aba48af)) ### Maintenance * add /worktree skill for parallel worktree management ([#171](#171)) ([951e337](951e337)) * add design spec context loading to research-link skill ([8ef9685](8ef9685)) * add post-merge-cleanup skill ([#70](#70)) ([f913705](f913705)) * add pre-pr-review skill and update CLAUDE.md ([#103](#103)) ([92e9023](92e9023)) * add research-link skill and rename skill files to SKILL.md ([#101](#101)) ([651c577](651c577)) * bump aiosqlite from 0.21.0 to 0.22.1 ([#191](#191)) ([3274a86](3274a86)) * bump pyyaml from 6.0.2 to 6.0.3 in the minor-and-patch group ([#96](#96)) ([0338d0c](0338d0c)) * bump ruff from 0.15.4 to 0.15.5 ([a49ee46](a49ee46)) * fix M0 audit items ([#66](#66)) ([c7724b5](c7724b5)) * pin setup-uv action to full SHA ([#281](#281)) ([4448002](4448002)) * post-audit cleanup — PEP 758, loggers, bug fixes, refactoring, tests, hookify rules ([#148](#148)) ([c57a6a9](c57a6a9)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
🤖 I have created a release *beep* *boop* --- ## [0.1.0](v0.0.0...v0.1.0) (2026-03-11) ### Features * add autonomy levels and approval timeout policies ([#42](#42), [#126](#126)) ([#197](#197)) ([eecc25a](eecc25a)) * add CFO cost optimization service with anomaly detection, reports, and approval decisions ([#186](#186)) ([a7fa00b](a7fa00b)) * add code quality toolchain (ruff, mypy, pre-commit, dependabot) ([#63](#63)) ([36681a8](36681a8)) * add configurable cost tiers and subscription/quota-aware tracking ([#67](#67)) ([#185](#185)) ([9baedfa](9baedfa)) * add container packaging, Docker Compose, and CI pipeline ([#269](#269)) ([435bdfe](435bdfe)), closes [#267](#267) * add coordination error taxonomy classification pipeline ([#146](#146)) ([#181](#181)) ([70c7480](70c7480)) * add cost-optimized, hierarchical, and auction assignment strategies ([#175](#175)) ([ce924fa](ce924fa)), closes [#173](#173) * add design specification, license, and project setup ([8669a09](8669a09)) * add env var substitution and config file auto-discovery ([#77](#77)) ([7f53832](7f53832)) * add FastestStrategy routing + vendor-agnostic cleanup ([#140](#140)) ([09619cb](09619cb)), closes [#139](#139) * add HR engine and performance tracking ([#45](#45), [#47](#47)) ([#193](#193)) ([2d091ea](2d091ea)) * add issue auto-search and resolution verification to PR review skill ([#119](#119)) ([deecc39](deecc39)) * add mandatory JWT + API key authentication ([#256](#256)) ([c279cfe](c279cfe)) * add memory retrieval, ranking, and context injection pipeline ([#41](#41)) ([873b0aa](873b0aa)) * add pluggable MemoryBackend protocol with models, config, and events ([#180](#180)) ([46cfdd4](46cfdd4)) * add pluggable MemoryBackend protocol with models, config, and events ([#32](#32)) ([46cfdd4](46cfdd4)) * add pluggable output scan response policies ([#263](#263)) ([b9907e8](b9907e8)) * add pluggable PersistenceBackend protocol with SQLite implementation ([#36](#36)) ([f753779](f753779)) * add progressive trust and promotion/demotion subsystems ([#43](#43), [#49](#49)) ([3a87c08](3a87c08)) * add retry handler, rate limiter, and provider resilience ([#100](#100)) ([b890545](b890545)) * add SecOps security agent with rule engine, audit log, and ToolInvoker integration ([#40](#40)) ([83b7b6c](83b7b6c)) * add shared org memory and memory consolidation/archival ([#125](#125), [#48](#48)) ([4a0832b](4a0832b)) * design unified provider interface ([#86](#86)) ([3e23d64](3e23d64)) * expand template presets, rosters, and add inheritance ([#80](#80), [#81](#81), [#84](#84)) ([15a9134](15a9134)) * implement agent runtime state vs immutable config split ([#115](#115)) ([4cb1ca5](4cb1ca5)) * implement AgentEngine core orchestrator ([#11](#11)) ([#143](#143)) ([f2eb73a](f2eb73a)) * implement AuditRepository for security audit log persistence ([#279](#279)) ([94bc29f](94bc29f)) * implement basic tool system (registry, invocation, results) ([#15](#15)) ([c51068b](c51068b)) * implement built-in file system tools ([#18](#18)) ([325ef98](325ef98)) * implement communication foundation — message bus, dispatcher, and messenger ([#157](#157)) ([8e71bfd](8e71bfd)) * implement company template system with 7 built-in presets ([#85](#85)) ([cbf1496](cbf1496)) * implement conflict resolution protocol ([#122](#122)) ([#166](#166)) ([e03f9f2](e03f9f2)) * implement core entity and role system models ([#69](#69)) ([acf9801](acf9801)) * implement crash recovery with fail-and-reassign strategy ([#149](#149)) ([e6e91ed](e6e91ed)) * implement engine extensions — Plan-and-Execute loop and call categorization ([#134](#134), [#135](#135)) ([#159](#159)) ([9b2699f](9b2699f)) * implement enterprise logging system with structlog ([#73](#73)) ([2f787e5](2f787e5)) * implement graceful shutdown with cooperative timeout strategy ([#130](#130)) ([6592515](6592515)) * implement hierarchical delegation and loop prevention ([#12](#12), [#17](#17)) ([6be60b6](6be60b6)) * implement LiteLLM driver and provider registry ([#88](#88)) ([ae3f18b](ae3f18b)), closes [#4](#4) * implement LLM decomposition strategy and workspace isolation ([#174](#174)) ([aa0eefe](aa0eefe)) * implement meeting protocol system ([#123](#123)) ([ee7caca](ee7caca)) * implement message and communication domain models ([#74](#74)) ([560a5d2](560a5d2)) * implement model routing engine ([#99](#99)) ([d3c250b](d3c250b)) * implement parallel agent execution ([#22](#22)) ([#161](#161)) ([65940b3](65940b3)) * implement per-call cost tracking service ([#7](#7)) ([#102](#102)) ([c4f1f1c](c4f1f1c)) * implement personality injection and system prompt construction ([#105](#105)) ([934dd85](934dd85)) * implement single-task execution lifecycle ([#21](#21)) ([#144](#144)) ([c7e64e4](c7e64e4)) * implement subprocess sandbox for tool execution isolation ([#131](#131)) ([#153](#153)) ([3c8394e](3c8394e)) * implement task assignment subsystem with pluggable strategies ([#172](#172)) ([c7f1b26](c7f1b26)), closes [#26](#26) [#30](#30) * implement task decomposition and routing engine ([#14](#14)) ([9c7fb52](9c7fb52)) * implement Task, Project, Artifact, Budget, and Cost domain models ([#71](#71)) ([81eabf1](81eabf1)) * implement tool permission checking ([#16](#16)) ([833c190](833c190)) * implement YAML config loader with Pydantic validation ([#59](#59)) ([ff3a2ba](ff3a2ba)) * implement YAML config loader with Pydantic validation ([#75](#75)) ([ff3a2ba](ff3a2ba)) * initialize project with uv, hatchling, and src layout ([39005f9](39005f9)) * initialize project with uv, hatchling, and src layout ([#62](#62)) ([39005f9](39005f9)) * Litestar REST API, WebSocket feed, and approval queue (M6) ([#189](#189)) ([29fcd08](29fcd08)) * make TokenUsage.total_tokens a computed field ([#118](#118)) ([c0bab18](c0bab18)), closes [#109](#109) * parallel tool execution in ToolInvoker.invoke_all ([#137](#137)) ([58517ee](58517ee)) * testing framework, CI pipeline, and M0 gap fixes ([#64](#64)) ([f581749](f581749)) * wire all modules into observability system ([#97](#97)) ([f7a0617](f7a0617)) ### Bug Fixes * address Greptile post-merge review findings from PRs [#170](https://github.com/Aureliolo/ai-company/issues/170)-[#175](https://github.com/Aureliolo/ai-company/issues/175) ([#176](#176)) ([c5ca929](c5ca929)) * address post-merge review feedback from PRs [#164](https://github.com/Aureliolo/ai-company/issues/164)-[#167](https://github.com/Aureliolo/ai-company/issues/167) ([#170](#170)) ([3bf897a](3bf897a)), closes [#169](#169) * enforce strict mypy on test files ([#89](#89)) ([aeeff8c](aeeff8c)) * harden Docker sandbox, MCP bridge, and code runner ([#50](#50), [#53](#53)) ([d5e1b6e](d5e1b6e)) * harden git tools security + code quality improvements ([#150](#150)) ([000a325](000a325)) * harden subprocess cleanup, env filtering, and shutdown resilience ([#155](#155)) ([d1fe1fb](d1fe1fb)) * incorporate post-merge feedback + pre-PR review fixes ([#164](#164)) ([c02832a](c02832a)) * pre-PR review fixes for post-merge findings ([#183](#183)) ([26b3108](26b3108)) * resolve circular imports, bump litellm, fix release tag format ([#286](#286)) ([a6659b5](a6659b5)) * strengthen immutability for BaseTool schema and ToolInvoker boundaries ([#117](#117)) ([7e5e861](7e5e861)) ### Performance * harden non-inferable principle implementation ([#195](#195)) ([02b5f4e](02b5f4e)), closes [#188](#188) ### Refactoring * adopt NotBlankStr across all models ([#108](#108)) ([#120](#120)) ([ef89b90](ef89b90)) * extract _SpendingTotals base class from spending summary models ([#111](#111)) ([2f39c1b](2f39c1b)) * harden BudgetEnforcer with error handling, validation extraction, and review fixes ([#182](#182)) ([c107bf9](c107bf9)) * harden personality profiles, department validation, and template rendering ([#158](#158)) ([10b2299](10b2299)) * pre-PR review improvements for ExecutionLoop + ReAct loop ([#124](#124)) ([8dfb3c0](8dfb3c0)) * split events.py into per-domain event modules ([#136](#136)) ([e9cba89](e9cba89)) ### Documentation * add ADR-001 memory layer evaluation and selection ([#178](#178)) ([db3026f](db3026f)), closes [#39](#39) * add agent scaling research findings to DESIGN_SPEC ([#145](#145)) ([57e487b](57e487b)) * add CLAUDE.md, contributing guide, and dev documentation ([#65](#65)) ([55c1025](55c1025)), closes [#54](#54) * add crash recovery, sandboxing, analytics, and testing decisions ([#127](#127)) ([5c11595](5c11595)) * address external review feedback with MVP scope and new protocols ([#128](#128)) ([3b30b9a](3b30b9a)) * expand design spec with pluggable strategy protocols ([#121](#121)) ([6832db6](6832db6)) * finalize 23 design decisions (ADR-002) ([#190](#190)) ([8c39742](8c39742)) * update project docs for M2.5 conventions and add docs-consistency review agent ([#114](#114)) ([99766ee](99766ee)) ### Tests * add e2e single agent integration tests ([#24](#24)) ([#156](#156)) ([f566fb4](f566fb4)) * add provider adapter integration tests ([#90](#90)) ([40a61f4](40a61f4)) ### CI/CD * add Release Please for automated versioning and GitHub Releases ([#278](#278)) ([a488758](a488758)) * bump actions/checkout from 4 to 6 ([#95](#95)) ([1897247](1897247)) * bump actions/upload-artifact from 4 to 7 ([#94](#94)) ([27b1517](27b1517)) * bump anchore/scan-action from 6.5.1 to 7.3.2 ([#271](#271)) ([80a1c15](80a1c15)) * bump docker/build-push-action from 6.19.2 to 7.0.0 ([#273](#273)) ([dd0219e](dd0219e)) * bump docker/login-action from 3.7.0 to 4.0.0 ([#272](#272)) ([33d6238](33d6238)) * bump docker/metadata-action from 5.10.0 to 6.0.0 ([#270](#270)) ([baee04e](baee04e)) * bump docker/setup-buildx-action from 3.12.0 to 4.0.0 ([#274](#274)) ([5fc06f7](5fc06f7)) * bump sigstore/cosign-installer from 3.9.1 to 4.1.0 ([#275](#275)) ([29dd16c](29dd16c)) * harden CI/CD pipeline ([#92](#92)) ([ce4693c](ce4693c)) * split vulnerability scans into critical-fail and high-warn tiers ([#277](#277)) ([aba48af](aba48af)) ### Maintenance * add /worktree skill for parallel worktree management ([#171](#171)) ([951e337](951e337)) * add design spec context loading to research-link skill ([8ef9685](8ef9685)) * add post-merge-cleanup skill ([#70](#70)) ([f913705](f913705)) * add pre-pr-review skill and update CLAUDE.md ([#103](#103)) ([92e9023](92e9023)) * add research-link skill and rename skill files to SKILL.md ([#101](#101)) ([651c577](651c577)) * bump aiosqlite from 0.21.0 to 0.22.1 ([#191](#191)) ([3274a86](3274a86)) * bump pyyaml from 6.0.2 to 6.0.3 in the minor-and-patch group ([#96](#96)) ([0338d0c](0338d0c)) * bump ruff from 0.15.4 to 0.15.5 ([a49ee46](a49ee46)) * fix M0 audit items ([#66](#66)) ([c7724b5](c7724b5)) * **main:** release ai-company 0.1.1 ([#282](#282)) ([2f4703d](2f4703d)) * pin setup-uv action to full SHA ([#281](#281)) ([4448002](4448002)) * post-audit cleanup — PEP 758, loggers, bug fixes, refactoring, tests, hookify rules ([#148](#148)) ([c57a6a9](c57a6a9)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --------- Signed-off-by: Aurelio <19254254+Aureliolo@users.noreply.github.com>
Summary
/research-linkskill for researching external links, tools, articles, and concepts against the ai-company project. Accepts URLs, tool names, pasted content, or concept descriptions and produces decision-oriented assessments (USE/ADAPT/REPLACE/RETHINK/LATER/SKIP verdicts).skill.mdfiles to uppercaseSKILL.mdfor cross-platform compatibility — lowercase silently fails on case-sensitive filesystems (Linux/macOS). See anthropics/skills#314.What the skill does
Test plan
/research-linkshows up in skill list/aurelio-review-pr,/post-merge-cleanup) still load after rename🤖 Generated with Claude Code