bidding-tracker

ReviewAudited by ClawScan on May 10, 2026.

Overview

The tool matches its bid-tracking purpose, but it should be reviewed because managers may be able to see projects outside their scope and fuzzy project matching can change the wrong bid record.

Review this skill before installing in a shared team environment. If you use it, prefer exact project numbers, confirm every status-changing action, and fix the manager query bug so users cannot view projects outside their responsibility. Avoid placing confidential secrets in tender files or profile prompts used for evaluation.

Findings (4)

Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.

What this means

A team member who knows or guesses a project number may be able to view other bid records, including budgets, contacts, procurement parties, deadlines, and results.

Why it was flagged

An exact project-number lookup returns immediately before the manager role filter is added, so a manager using an exact project number can receive a project record outside their assignment.

Skill content
if keyword:
    exact = conn.execute("SELECT * FROM projects WHERE project_no = ?", (keyword,)).fetchone()
    if exact:
        ...
        return [dict(zip(cols, exact))]
...
if role == 'manager' and name:
    sql += " AND project_manager = ?"
Recommendation

Apply role and assignment filters before returning exact matches, and require authenticated user context for all project detail lookups.

What this means

A vague project name could cause the agent to mark the wrong bid as purchased, sealed, cancelled, or otherwise advanced in the workflow.

Why it was flagged

The skill resolves a project by exact number or fuzzy name fragment and then updates that project's status, with no visible ambiguity check or confirmation if multiple names match.

Skill content
"SELECT id FROM projects WHERE project_no = ? OR project_name LIKE ?", (keyword, f"%{keyword}%")).fetchone()
...
run_script('update_project.py', ['--id', str(project_id), '--field', 'status', '--value', status_value])
Recommendation

Require exact project numbers for mutations, or list all matches and ask the user to confirm before any state-changing action, especially cancellation and result entry.

What this means

Sensitive tender documents or company qualification profiles may be exposed to the model context, and document text could influence the agent's analysis if treated too authoritatively.

Why it was flagged

Tender document text and company profile context are intentionally placed into the model context for analysis.

Skill content
LLM 收到响应后,应将 `analysis_prompt` 作为分析框架指令,`profiles` 作为投标主体战略资产库上下文,`document_text` 作为待分析的招标文件原文
Recommendation

Use this only with intended tender files, avoid putting secrets in profiles, and treat tender-document contents as data rather than instructions.

What this means

Users have less external provenance information to verify where the code came from, even though the provided artifacts do not show hidden downloads or obfuscated behavior.

Why it was flagged

The package provenance is limited, while SKILL.md still declares a local editable pip install for the required `bidding-tracker` binary.

Skill content
Source: unknown; Homepage: none; Install specifications: No install spec — this is an instruction-only skill.
Recommendation

Install only from a trusted workspace or reviewed repository, and ensure the packaged code matches the reviewed artifacts.