Compare commits

..

1 Commits

Author SHA1 Message Date
Hermes Pipeline 730115b418 Add Skill: code-review-agent
Extracted from: https://github.com/itszhaoziyan-n/AgentKit.git
Score: 1.0
2026-08-05 15:46:16 +00:00
8 changed files with 167 additions and 59 deletions
+76
View File
@@ -0,0 +1,76 @@
---
name: code-review-agent
version: 1.0.0
description: Automate code review process using a multi-step workflow with human-in-the-loop
approval.
inputs:
- Repository diff or code changeset (string)
- User ID (string)
steps:
- 'Step 1: Build the code review graph using `build_graph()` from `agentkit.workflow.code_review.graph`'
- 'Step 2: Invoke the graph with initial parameters including the repository diff
and user ID, and set thread_id as a configurable parameter'
- 'Step 3: The graph processes the input through various steps until completion or
human approval is needed'
outputs:
- Review result (dictionary containing messages, issues, etc.)
tags: []
metadata:
source_repo: https://github.com/itszhaoziyan-n/AgentKit.git
extracted_at: ''
confidence: 0.95
---
# code-review-agent
Automate code review process using a multi-step workflow with human-in-the-loop approval.
## Setup
**Dependencies:**
```text
pip install langgraph>=0.3 langchain-core>=0.3 langchain-anthropic>=0.3 langfuse>=2.0 mcp[server]>=1.24,<2.0 langchain-mcp-adapters>=0.1 tenacity>=9.0
```
**Setup steps:**
1. cp .env.example .env
1. docker compose up -d
1. pip install -e '.[dev]'
## Key Files
- `agentkit/workflow/code_review/graph.py - Defines the code review graph and its invocation method.`
## Steps
1. Step 1: Build the code review graph using `build_graph()` from `agentkit.workflow.code_review.graph`
2. Step 2: Invoke the graph with initial parameters including the repository diff and user ID, and set thread_id as a configurable parameter
3. Step 3: The graph processes the input through various steps until completion or human approval is needed
## Implementation Details
```python
graph = build_graph()
thread_id = str(uuid.uuid4())
result = graph.invoke(...)
```
## Inputs
- Repository diff or code changeset (string)
- User ID (string)
## Outputs
- Review result (dictionary containing messages, issues, etc.)
## Failure Modes
- Specific failure scenario with mitigation: If the graph invocation fails due to an unexpected state, it will halt and require manual intervention.
## Source
Extracted from: [https://github.com/itszhaoziyan-n/AgentKit.git](https://github.com/itszhaoziyan-n/AgentKit.git)
Confidence: 0.95
+6
View File
@@ -0,0 +1,6 @@
# Commands: code-review-agent
## Available Commands
- `/skill code-review-agent` — Load this skill
- `/run code-review-agent` — Execute workflow
+10
View File
@@ -0,0 +1,10 @@
# Examples: code-review-agent
## Usage Example
```python
# How to use this skill
# Inputs: Repository diff or code changeset (string), User ID (string)
# Process: Step 1: Build the code review graph using `build_graph()` from `agentkit.workflow.code_review.graph` → Step 2: Invoke the graph with initial parameters including the repository diff and user ID, and set thread_id as a configurable parameter → Step 3: The graph processes the input through various steps until completion or human approval is needed
# Outputs: Review result (dictionary containing messages, issues, etc.)
```
+24
View File
@@ -0,0 +1,24 @@
{
"name": "code-review-agent",
"version": "1.0.0",
"goal": "Automate code review process using a multi-step workflow with human-in-the-loop approval.",
"inputs": [
"Repository diff or code changeset (string)",
"User ID (string)"
],
"steps": [
"Step 1: Build the code review graph using `build_graph()` from `agentkit.workflow.code_review.graph`",
"Step 2: Invoke the graph with initial parameters including the repository diff and user ID, and set thread_id as a configurable parameter",
"Step 3: The graph processes the input through various steps until completion or human approval is needed"
],
"outputs": [
"Review result (dictionary containing messages, issues, etc.)"
],
"failure_modes": [
"Specific failure scenario with mitigation: If the graph invocation fails due to an unexpected state, it will halt and require manual intervention."
],
"confidence": 0.95,
"explanation": "This workflow is reusable for any code review process that requires a multi-step analysis with human-in-the-loop approval.",
"source_repo": "https://github.com/itszhaoziyan-n/AgentKit.git",
"score": 1.0
}
+9
View File
@@ -0,0 +1,9 @@
# Tests: code-review-agent
## Test Checklist
- [ ] Workflow has at least 3 steps
- [ ] All inputs are defined
- [ ] All outputs are defined
- [ ] Failure modes are documented
- [ ] Skill can be loaded without errors
+30 -45
View File
@@ -1,27 +1,26 @@
--- ---
name: research-pipeline name: research-pipeline
version: 1.0.0 version: 1.0.0
description: Fetch a Wikipedia page, summarise it using an AI agent, and write the description: Fetch a Wikipedia page, summarise its content using an AI agent, and
summary to a file. write the summary to a file.
inputs: inputs:
- URL of the Wikipedia page - URL of the Wikipedia page
steps: steps:
- 'Step 1: Import necessary modules from _bootstrap (NIM_MODEL, require_nim_api_key) - 'Step 1: Import necessary modules from `_bootstrap` and `blacknode`: Run `from _bootstrap
and blacknode' import NIM_MODEL, require_nim_api_key; import blacknode as bn`'
- 'Step 2: Require NVIDIA NIM API key using `require_nim_api_key()`' - 'Step 2: Require NVIDIA NIM API key: Call `require_nim_api_key()` to ensure the
- 'Step 3: Create a Graph instance `g`' API key is set.'
- 'Step 4: Add a Literal node for the URL of the Wikipedia page (`url`)' - 'Step 3: Create a graph instance: Initialize `g = bn.Graph()`.'
- 'Step 5: Add an HTTPGet node to fetch the content from the URL (`fetcher`) and connect - 'Step 4: Add nodes for URL, HTTPGet, summarisation, and file writing: `url = g.node(''Literal'',
it to the Literal node' value=''URL of the Wikipedia page''); fetcher = g.node(''HTTPGet''); summarise =
- 'Step 6: Add an LLMAgent node with system prompt ''You are a technical writer. Summarise g.node(''LLMAgent'', system=''You are a technical writer. Summarise the text in
the text in 3 bullet points.'' and model NIM_MODEL (`summarise`), connecting its 3 bullet points.'', model=NIM_MODEL); writer = g.node(''FileWrite'', path=''summary.txt'')`'
input to the output of `fetcher`' - 'Step 5: Connect nodes with edges: `url.out(''value'') >> fetcher.inp(''url'');
- 'Step 7: Add a FileWrite node to write the summary to a file named ''summary.txt'' fetcher.out(''text'') >> summarise.inp(''prompt''); summarise.out(''text'') >> writer.inp(''text'')`'
(`writer`), connecting its input to the output of `summarise`' - 'Step 6: Cook the graph to execute and get output: `result = g.cook(writer, ''path'');
- 'Step 8: Cook the graph starting from the writer node and print the path where the print(f''Summary written to: {result}'')`'
summary is written'
outputs: outputs:
- Path to the summary file - Path of the summary file
tags: [] tags: []
metadata: metadata:
source_repo: https://github.com/temiroff/Blacknode.git source_repo: https://github.com/temiroff/Blacknode.git
@@ -31,7 +30,7 @@ metadata:
# research-pipeline # research-pipeline
Fetch a Wikipedia page, summarise it using an AI agent, and write the summary to a file. Fetch a Wikipedia page, summarise its content using an AI agent, and write the summary to a file.
## Setup ## Setup
@@ -43,8 +42,8 @@ pip install anthropic>=0.25 docker>=7.1 openai>=1.0
**Setup steps:** **Setup steps:**
1. Ensure NVIDIA NIM API key is set in the environment or editor UI 1. Ensure NVIDIA NIM API key is set in the environment or editor
1. Install required dependencies using `pip install -r requirements.txt` 1. Install required dependencies: `pip install -r requirements.txt`
## Key Files ## Key Files
@@ -52,39 +51,25 @@ pip install anthropic>=0.25 docker>=7.1 openai>=1.0
## Steps ## Steps
1. Step 1: Import necessary modules from _bootstrap (NIM_MODEL, require_nim_api_key) and blacknode 1. Step 1: Import necessary modules from `_bootstrap` and `blacknode`: Run `from _bootstrap import NIM_MODEL, require_nim_api_key; import blacknode as bn`
2. Step 2: Require NVIDIA NIM API key using `require_nim_api_key()` 2. Step 2: Require NVIDIA NIM API key: Call `require_nim_api_key()` to ensure the API key is set.
3. Step 3: Create a Graph instance `g` 3. Step 3: Create a graph instance: Initialize `g = bn.Graph()`.
4. Step 4: Add a Literal node for the URL of the Wikipedia page (`url`) 4. Step 4: Add nodes for URL, HTTPGet, summarisation, and file writing: `url = g.node('Literal', value='URL of the Wikipedia page'); fetcher = g.node('HTTPGet'); summarise = g.node('LLMAgent', system='You are a technical writer. Summarise the text in 3 bullet points.', model=NIM_MODEL); writer = g.node('FileWrite', path='summary.txt')`
5. Step 5: Add an HTTPGet node to fetch the content from the URL (`fetcher`) and connect it to the Literal node 5. Step 5: Connect nodes with edges: `url.out('value') >> fetcher.inp('url'); fetcher.out('text') >> summarise.inp('prompt'); summarise.out('text') >> writer.inp('text')`
6. Step 6: Add an LLMAgent node with system prompt 'You are a technical writer. Summarise the text in 3 bullet points.' and model NIM_MODEL (`summarise`), connecting its input to the output of `fetcher` 6. Step 6: Cook the graph to execute and get output: `result = g.cook(writer, 'path'); print(f'Summary written to: {result}')`
7. Step 7: Add a FileWrite node to write the summary to a file named 'summary.txt' (`writer`), connecting its input to the output of `summarise`
8. Step 8: Cook the graph starting from the writer node and print the path where the summary is written
## Implementation Details ## Implementation Details
```python ```python
from _bootstrap import NIM_MODEL, require_nim_api_key from _bootstrap import NIM_MODEL, require_nim_api_key; import blacknode as bn
import blacknode as bn
``` ```
```python ```python
g = bn.Graph() url = g.node('Literal', value='https://en.wikipedia.org/w/api.php?action=query&prop=extracts&exintro=1&explaintext=1&titles=Houdini_(software)&format=json&formatversion=2&origin=*'); fetcher = g.node('HTTPGet'); summarise = g.node('LLMAgent', system='You are a technical writer. Summarise the text in 3 bullet points.', model=NIM_MODEL); writer = g.node('FileWrite', path='summary.txt')
url = g.node('Literal', value='https://en.wikipedia.org/w/api.php?action=query&prop=extracts&exintro=1&explaintext=1&titles=Houdini_(software)&format=json&formatversion=2&origin=*')
fetcher = g.node('HTTPGet')
summarise = g.node('LLMAgent', system='You are a technical writer. Summarise the text in 3 bullet points.', model=NIM_MODEL)
writer = g.node('FileWrite', path='summary.txt')
``` ```
```python ```python
url.out('value') >> fetcher.inp('url') url.out('value') >> fetcher.inp('url'); fetcher.out('text') >> summarise.inp('prompt'); summarise.out('text') >> writer.inp('text')
fetcher.out('text') >> summarise.inp('prompt')
summarise.out('text') >> writer.inp('text')
```
```python
result = g.cook(writer, 'path')
print(f'Summary written to: {result}')
``` ```
## Inputs ## Inputs
@@ -93,11 +78,11 @@ print(f'Summary written to: {result}')
## Outputs ## Outputs
- Path to the summary file - Path of the summary file
## Failure Modes ## Failure Modes
- If the URL is invalid, HTTPGet will fail; if NIM API key is missing, LLMAgent will not function properly - If the URL is invalid or unreachable, the HTTPGet node will fail; if the summarisation fails, the output text might be empty
## Source ## Source
+2 -2
View File
@@ -5,6 +5,6 @@
```python ```python
# How to use this skill # How to use this skill
# Inputs: URL of the Wikipedia page # Inputs: URL of the Wikipedia page
# Process: Step 1: Import necessary modules from _bootstrap (NIM_MODEL, require_nim_api_key) and blacknode → Step 2: Require NVIDIA NIM API key using `require_nim_api_key()` → Step 3: Create a Graph instance `g` # Process: Step 1: Import necessary modules from `_bootstrap` and `blacknode`: Run `from _bootstrap import NIM_MODEL, require_nim_api_key; import blacknode as bn` → Step 2: Require NVIDIA NIM API key: Call `require_nim_api_key()` to ensure the API key is set. → Step 3: Create a graph instance: Initialize `g = bn.Graph()`.
# Outputs: Path to the summary file # Outputs: Path of the summary file
``` ```
+10 -12
View File
@@ -1,28 +1,26 @@
{ {
"name": "research-pipeline", "name": "research-pipeline",
"version": "1.0.0", "version": "1.0.0",
"goal": "Fetch a Wikipedia page, summarise it using an AI agent, and write the summary to a file.", "goal": "Fetch a Wikipedia page, summarise its content using an AI agent, and write the summary to a file.",
"inputs": [ "inputs": [
"URL of the Wikipedia page" "URL of the Wikipedia page"
], ],
"steps": [ "steps": [
"Step 1: Import necessary modules from _bootstrap (NIM_MODEL, require_nim_api_key) and blacknode", "Step 1: Import necessary modules from `_bootstrap` and `blacknode`: Run `from _bootstrap import NIM_MODEL, require_nim_api_key; import blacknode as bn`",
"Step 2: Require NVIDIA NIM API key using `require_nim_api_key()`", "Step 2: Require NVIDIA NIM API key: Call `require_nim_api_key()` to ensure the API key is set.",
"Step 3: Create a Graph instance `g`", "Step 3: Create a graph instance: Initialize `g = bn.Graph()`.",
"Step 4: Add a Literal node for the URL of the Wikipedia page (`url`)", "Step 4: Add nodes for URL, HTTPGet, summarisation, and file writing: `url = g.node('Literal', value='URL of the Wikipedia page'); fetcher = g.node('HTTPGet'); summarise = g.node('LLMAgent', system='You are a technical writer. Summarise the text in 3 bullet points.', model=NIM_MODEL); writer = g.node('FileWrite', path='summary.txt')`",
"Step 5: Add an HTTPGet node to fetch the content from the URL (`fetcher`) and connect it to the Literal node", "Step 5: Connect nodes with edges: `url.out('value') >> fetcher.inp('url'); fetcher.out('text') >> summarise.inp('prompt'); summarise.out('text') >> writer.inp('text')`",
"Step 6: Add an LLMAgent node with system prompt 'You are a technical writer. Summarise the text in 3 bullet points.' and model NIM_MODEL (`summarise`), connecting its input to the output of `fetcher`", "Step 6: Cook the graph to execute and get output: `result = g.cook(writer, 'path'); print(f'Summary written to: {result}')`"
"Step 7: Add a FileWrite node to write the summary to a file named 'summary.txt' (`writer`), connecting its input to the output of `summarise`",
"Step 8: Cook the graph starting from the writer node and print the path where the summary is written"
], ],
"outputs": [ "outputs": [
"Path to the summary file" "Path of the summary file"
], ],
"failure_modes": [ "failure_modes": [
"If the URL is invalid, HTTPGet will fail; if NIM API key is missing, LLMAgent will not function properly" "If the URL is invalid or unreachable, the HTTPGet node will fail; if the summarisation fails, the output text might be empty"
], ],
"confidence": 0.95, "confidence": 0.95,
"explanation": "This workflow can be adapted to fetch and summarise any text from a URL using an AI agent and save the summary to a file.", "explanation": "This workflow can be adapted to fetch and summarise any Wikipedia page or similar content source.",
"source_repo": "https://github.com/temiroff/Blacknode.git", "source_repo": "https://github.com/temiroff/Blacknode.git",
"score": 1.0 "score": 1.0
} }