Agent skill
score-rfi
Score vendor RFI responses using a 0-3 rubric with SQLite storage
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/other/other/score-rfi
SKILL.md
/score-rfi
Score vendor RFI responses stored in SQLite databases using a standardised 0-3 rubric.
Usage
/score-rfi <vendor-name>
/score-rfi pwc
/score-rfi accenture
/score-rfi ibm
Prerequisites
Before scoring, ensure the vendor's CSV has been converted to SQLite:
# Convert CSV to SQLite (see /csv-to-sql skill)
node scripts/csv-to-sqlite.js "Inbox/<vendor>-rfi-responses.csv" --start-row <n> --fts --verbose
Scoring Rubric (0-3 Scale)
| Score | Rating | Qualitative Assessment |
|---|---|---|
| 3 | High | Strong proven experience; clear, detailed answer demonstrating deep understanding; high confidence in capability |
| 2 | Medium | Some capability demonstrated; potential but unproven or limited evidence; moderate risk |
| 1 | Low | Insufficient evidence; generic or superficial response; does not address specifics; high risk |
| 0 | Zero | Not demonstrated at all; no evidence or response; very high risk |
Scoring Criteria
When evaluating responses, consider:
- Domain Specificity - Does the response demonstrate understanding of your industry operations and relevant regulations?
- Organisation Context - Does it show awareness of your organisation's scale, operations, existing systems?
- Technical Depth - Are specific technologies, frameworks, methodologies named with concrete examples?
- Proven Experience - Are past implementations cited? Client references? Metrics?
- Risk Indicators - Are there red flags like "we will learn", "to be determined", "partner with"?
Score Format
All scores MUST be written in this format:
[score] - [brief reason for score]
Examples:
3 - Strong domain-specific response with mature frameworks; explicit regulatory references; relevant experience cited2 - Solid methodology but no domain-specific examples; generic enterprise approach1 - Insufficient evidence of capability; significant capability gap0 - No response provided
Instructions
Phase 1: Database Setup
-
Verify database exists:
bashsqlite3 .data/<vendor>-rfi-scoring.db ".tables" -
Check schema and scorer columns:
bashsqlite3 .data/<vendor>-rfi-scoring.db ".schema" -
Identify the scorer column (e.g.,
john_smith,jane_doe)
Phase 2: Parallel Scoring
Launch sub-agents to score questions in parallel. Each agent scores ~10-12 questions.
Agent Prompt Template:
You are scoring vendor RFI responses for the Systems Integrator procurement.
**Vendor:** <vendor-name>
**Database:** .data/<vendor>-rfi-scoring.db
**Table:** <table-name>
**Scorer Column:** <scorer-column>
**Questions:** <start-id> to <end-id>
**Scoring Rubric (0-3):**
- 3 = High: Strong proven experience, detailed response, high confidence
- 2 = Medium: Some capability, potential but unproven, moderate risk
- 1 = Low: Insufficient evidence, generic response, high risk
- 0 = Zero: Not demonstrated, no evidence, very high risk
**Focus Areas:**
- Domain specificity (industry regulations and compliance)
- Organisation context awareness
- Technical depth with concrete examples
- Proven implementations and references
**Instructions:**
1. Query questions <start-id> to <end-id>
2. For each, read the question and response columns
3. Apply the rubric to score each response
4. Return results in this format:
ID|SCORE|REASON
Example:
1|3|Strong domain-specific frameworks; compliance explicit
2|2|Solid approach but lacks specific examples
After scoring, update the database:
sqlite3 .data/<db>.db "UPDATE <table> SET <scorer_col> = '<score> - <reason>' WHERE id = '<id>';"
Phase 3: Execute Scoring
-
Launch 4 parallel agents covering all questions (e.g., 1-11, 12-22, 23-33, 34-44)
-
Verify updates:
bashsqlite3 .data/<vendor>-rfi-scoring.db -markdown -header \ "SELECT id, <scorer_col> FROM <table> ORDER BY CAST(id AS INTEGER);"
Phase 4: Generate Summary
-
Query score distribution:
bashsqlite3 .data/<vendor>-rfi-scoring.db \ "SELECT CAST(SUBSTR(<scorer_col>, 1, 1) AS INTEGER) as score, COUNT(*) FROM <table> GROUP BY score ORDER BY score DESC;" -
Query low scores (risks):
bashsqlite3 .data/<vendor>-rfi-scoring.db -markdown -header \ "SELECT id, SUBSTR(question, 1, 60) as question, <scorer_col> FROM <table> WHERE <scorer_col> LIKE '1 -%' OR <scorer_col> LIKE '0 -%' ORDER BY CAST(id AS INTEGER);" -
Create summary Page using template below
Phase 5: Create Summary Page
Create a Page note at: Page - SI RFI Scoring - <Vendor> - <Scorer> Scores.md
Template:
---
type: Page
title: SI RFI Scoring - <Vendor> - <Scorer> Scores
created: <today>
modified: <today>
tags:
- project/<project-name>
- activity/evaluation
- vendor/<vendor-lowercase>
- workstream/rfi-scoring
confidence: high
freshness: current
source: primary
verified: true
reviewed: <today>
relatedTo:
- "[[Project - <Project Name>]]"
- "[[Page - SI RFI Scoring - <Vendor> Response]]"
---
# SI RFI Scoring - <Vendor> - <Scorer> Scores
Scoring assessment of <Vendor>'s response to the Systems Integrator RFI.
## Summary
| Metric | Value |
| ---------------- | ---------------- |
| Total Questions | <count> |
| Average Score | <avg> / 3.00 |
| Score 3 (High) | <count> (<pct>%) |
| Score 2 (Medium) | <count> (<pct>%) |
| Score 1 (Low) | <count> (<pct>%) |
| Score 0 (Zero) | <count> (<pct>%) |
## Key Findings
### Strengths (Score 3)
<bullet list of strength themes>
### Gaps (Score 1-2)
| ID | Area | Score | Risk |
| --- | ---- | ----- | ---- |
<table of low-scoring questions>
### Risk Summary
<brief summary of primary risks and mitigation>
## Detailed Scores
| ID | Question | Score | Reason |
| --- | -------- | ----- | ------ |
<full table of all scores>
## Data Source
Scores stored in SQLite database: `.data/<vendor>-rfi-scoring.db`
Useful Queries
# All scores with full questions
sqlite3 .data/<db>.db -markdown -header \
"SELECT id, question, <scorer_col> FROM <table> ORDER BY CAST(id AS INTEGER);"
# Compare multiple scorers
sqlite3 .data/<db>.db -markdown -header \
"SELECT id, scorer_1, scorer_2, scorer_3 FROM <table> ORDER BY CAST(id AS INTEGER);"
# Average score
sqlite3 .data/<db>.db \
"SELECT ROUND(AVG(CAST(SUBSTR(<scorer_col>, 1, 1) AS REAL)), 2) FROM <table>;"
# Search responses for keyword
sqlite3 .data/<db>.db -markdown -header \
"SELECT id, question FROM <table>_fts WHERE <table>_fts MATCH 'integration';"
Multi-Vendor Comparison
After scoring all vendors, create a comparison summary:
# Export each vendor's scores
sqlite3 .data/pwc-rfi.db "SELECT id, SUBSTR(scorer_col,1,1) as score FROM data;" > pwc-scores.txt
sqlite3 .data/accenture-rfi.db "SELECT id, SUBSTR(scorer_col,1,1) as score FROM data;" > accenture-scores.txt
Create a comparison Page: Page - SI RFI Scoring - Vendor Comparison.md
Related Skills
- [[.claude/skills/csv-to-sql/SKILL.md]] - Convert CSV to SQLite database
- [[.claude/skills/csv-to-markdown/SKILL.md]] - Convert CSV to markdown table
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?