AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified Apache-2.0 Self-run

Nl Tax Evidence Indexer

skill-cyanxxy-nl-tax-agent-skills-nl-tax-evidence-indexer · by cyanxxy

Catalog and hash Dutch tax documents (`jaaropgaaf`, `bankafschrift`, `woz_beschikking`, `hypotheek_jaaroverzicht`, `voorlopige_aanslag_beschikking`) and chat-stated amounts into an evidence index. Use when the user shares or mentions tax documents, or a workflow needs evidence for a section.

No reviews yet
0 installs
37 views
0.0% view→install

Install

$ agentstack add skill-cyanxxy-nl-tax-agent-skills-nl-tax-evidence-indexer

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access Used
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-cyanxxy-nl-tax-agent-skills-nl-tax-evidence-indexer)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
2mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Nl Tax Evidence Indexer? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

NL Tax Evidence Indexer

Catalog whatever evidence the user has - files in uploads//evidence/, and values stated in chat - into a single structured index. This skill is conversational: it does not assume the user has dropped a complete folder of documents.

When to use

  • The user mentions having (or being about to share) tax documents.
  • A workflow skill (annual / provisional) needs evidence for a section.
  • New files appear in uploads/ or evidence/.
  • The user wants to record a value in chat ("my 2025 employer paid me EUR 52,400") that should be tracked alongside files.

Read first (every turn)

Bundled paths below are relative to this skill's own directory: reference/ and templates/ are subfolders, and _shared/ is the plugin-shared folder at ../_shared/. Resolve bundled files with host file tools (Read first, Glob or Grep if a path is not obvious). Do not use Bash to discover or read plugin files: in Cowork, shell commands run in an isolated VM that may not see the plugin cache even when Read and Glob can. If the host has already expanded ${CLAUDE_PLUGIN_ROOT} or ${CLAUDE_SKILL_DIR}, those absolute paths are fine for file tools; otherwise search within the loaded plugin/skill tree and resolve relative to this skill directory. Resolve every workspace/... path against workspace_root recorded in session-progress.yaml (or profile.yaml); never create a second workspace/ tree.

  1. _shared/knowledge/methods/interactive-elicitation.md - the conversational contract.
  2. reference/evidence-types.md, reference/extraction-boundaries.md
  3. workspace/shared/session-progress.yaml - to see which evidence questions are open.
  4. workspace/taxpayer/evidence-index.yaml if it exists. Otherwise prepare to create it from templates/evidence-index.yaml.

Items 2-3 are internal rules. Do not quote or summarize them to the user unless the user offers credentials, asks for login/submission help, or a specific uploaded item needs review.

How files arrive (folder drop AND host attachments)

uploads/ and evidence/ are the canonical evidence locations, but the user does not have to put files there by hand. Accept all of these:

  • Folder drop - files the user placed in uploads/ or evidence/ directly.
  • Host attachment - files attached in the chat UI (Cowork, Claude Code,

Codex). Hosts place these somewhere in the session working directory - often the workspace root or a host-specific attachments path, not uploads/.

  • Stated in chat - no file at all; record as a user_chat item.

When the user mentions attaching or sharing a file and it is not in uploads/ or evidence/, look for it in the working directory (and any host attachment path visible to you). When found, prefer copying it into uploads/ with its original filename before indexing — but only via a byte-faithful mechanism: a shell copy (python3 -c "import shutil; shutil.copy2(src, dst)" under the allowed Bash(python3:*) tool) when the shell can see both paths, or a host file-copy facility if one exists. Never round-trip a binary file (PDF, image, xlsx) through Read + Write — that corrupts it. If no faithful copy is possible (no shell access to the attachment path, binary content), index the file in place: record its real path in file_path, note location: host_attachment in the item's notes, and continue — cataloging does not require the file to live in uploads/. Never ask the user to re-upload a file that is already in the session; never treat "it's not in uploads/" as "the user has no evidence".

What this skill does

  • Scan uploads/ and evidence/ for new files; classify each one.
  • Hash each file (sha256) for integrity tracking.
  • Record user-stated values as evidence items with extraction_status: "user_chat" (no file).
  • Drive the conversation when a workflow needs evidence that is not yet present.
  • Generate review questions for items the user must verify.

Conversational behavior

The indexer never tries to do everything in one shot. Its turn-by-turn loop is:

  1. Inventory pass. List what is currently in uploads/ and evidence/, plus any host-attached files elsewhere in the session (copy those into uploads/ first - see How files arrive). Diff against existing entries in evidence-index.yaml. Add or update items as needed.
  2. Tell the user what was found. One short sentence per file: "Found jaaropgaaf-2025.pdf - looks like a 2025 jaaropgaaf from {employer}, confidence 0.85." Do not paste long extracts.
  3. Ask only about gaps that are blocking the active workflow. If the active workflow is annual_2025 and there is no jaaropgaaf and no employment income recorded, ask: "Do you have a 2025 jaaropgaaf? You can attach it here in the chat, drop it into uploads/, or just tell me the amount."
  4. Accept whichever the user offers - file or chat - and record it accordingly.
  5. Defer politely. If the user can't provide it now, mark extraction_status: "deferred", add to missing-info.md, and move on.

Batch at most three evidence questions per turn.

Two paths for every fact

Each item in evidence-index.yaml carries a source field:

  • file - a real file in uploads/ or evidence/.
  • user_chat - a value the user stated. Includes quote (verbatim user text) and stated_at.
  • unknown - promised but not yet provided (deferred). Set extraction_status: "deferred"; this matches the source: unknown + deferred-status provenance used in profile.yaml and the workflow skills.

For user_chat items, set file_path: null, file_sha256: null, extraction_status: "user_chat", and put the stated amounts under extracted_fields with a clear key (e.g., gross_employment_income_eur).

Evidence classification

For each file or user-stated item, determine:

  • evidence_type (jaaropgaaf, bankafschrift, woz_beschikking, hypotheek_jaaroverzicht, voorlopige_aanslag_beschikking, definitieve_aanslag, etc.)
  • tax_year
  • owner (taxpayer or partner)
  • confidence (0.0-1.0)
  • review_required (true if confidence . If no shell can reach the file at all, set file_sha256: null (the schema permits a null hash) and continue — cataloging and classification do not depend on the hash. Never copy bundled scripts into workspace/, and never execute a .py file located under workspace/, uploads/, or evidence/ (the inline -c` hash/copy commands above run no file-based script and are fine).
  • Do not add generic safety-warning paragraphs to normal user-facing replies.

Output files

Write or update:

  • workspace/taxpayer/evidence-index.yaml (seed from templates/evidence-index.yaml on first write)
  • workspace/shared/evidence-review-questions.md (seed from templates/evidence-review-questions.md on first write)
  • workspace/shared/session-progress.yaml (record answered/open evidence question_ids)
  • workspace/shared/missing-info.md (when items are deferred)

Do NOT write to:

  • workspace/annual/**
  • workspace/provisional/**

End-of-turn report

After each turn, report to the user in 2-4 sentences:

  • How many files indexed (added / updated).
  • How many user-stated values recorded.
  • The one or two next pieces of evidence that would unblock the active workflow.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.