hubdoc-reviewer
Review all unreviewed documents in Hubdoc. Use when reviewing, processing or publishing Hubdoc receipts and bills.
Best use case
hubdoc-reviewer is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Review all unreviewed documents in Hubdoc. Use when reviewing, processing or publishing Hubdoc receipts and bills.
Teams using hubdoc-reviewer should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/hubdoc-reviewer/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How hubdoc-reviewer Compares
| Feature / Agent | hubdoc-reviewer | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Review all unreviewed documents in Hubdoc. Use when reviewing, processing or publishing Hubdoc receipts and bills.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Hubdoc Reviewer
Reviews all documents in the Hubdoc Review tab, one by one, and (when
that is empty) the Failed tab.
## Skill maintenance goal
When adding or updating instructions in this skill, all documented methods
(JS selectors, click sequences, field-setting approaches) **must be tested
and verified to work** before being committed to the skill. Never document
untested code. The goal is to build bulletproof, reliable documentation so
that Hubdoc automation works first time without painful trial and error.
## Prerequisites
- The `agent-browser` skill is installed
- `agent-browser` connected to Chrome
- Tab open on https://app.hubdoc.com (open new one if necessary)
**Do not use** `agent-browser wait --load networkidle` — Xero never
reaches `networkidle`; use `agent-browser wait 3000` instead.
## Logging in
Always use "Sign In With Xero" — never use the email/password form:
```bash
# If the login page appears, click "Sign In With Xero"
agent-browser snapshot -i # find the Sign In With Xero link
agent-browser click @eN
agent-browser wait 3000
```
## Finding and interacting with page elements
**Always use `snapshot -i -C`** (not just `-i`) when looking for interactive
elements. The `-C` flag includes cursor-interactive elements (divs with
onclick, cursor:pointer) which many Hubdoc buttons and controls rely on.
Omitting `-C` will cause buttons to be invisible to the snapshot.
Choose the approach based on the nature of the element you're looking for:
- **Element with a known ID** (see [`references/fields.md`](references/fields.md))
→ JS eval to confirm which ref corresponds to that ID. Use JS only to
*identify*, not to set values.
- **Labelled interactive element** (button, link, named input) →
`snapshot -i -C`; use the ref directly.
- **Element identified by surrounding label text** (e.g. an unlabelled combobox
next to an "Account Code" label) → `snapshot` (no `-i`) to get the full
accessibility tree including non-interactive text, then find the label and
identify the adjacent ref.
- **Nothing else works** → screenshot as a last resort for visual confirmation.
Taking into account some exceptions listed in the references below, as a
general rule once the correct ref is identified, first try to interact via
agent-browser select/fill/click @eN
and similar, and only move onto other techniques like `eval` with JS
if that fails.
## Xero vs Xero Files
Hubdoc has a **Xero** destination section and a separate **Xero Files**
section. They are not interchangeable.
- For accounting publish configuration, always use the **Xero** section.
- **Never use the Xero Files section** when configuring or publishing a
document for accounting.
- If publish fields are not visible, expand the **Xero** section itself,
not the Xero Files section.
- When inspecting the DOM, verify you are using `xero-edit-integration`
or `push-to-xero-*` fields, not `xerofiles-edit-integration` or
`push-to-xerofiles-*` fields.
- **Scroll the Xero section into view before interacting with it.** Its
controls (Status, Account Code, Contact, Publish button) sit below the
fold on most viewports, and clicks on off-screen refs can miss or hit
the wrong element. Use `agent-browser scrollintoview @ref` on the Xero
section header (or any ref inside it) before snapshotting and acting:
```bash
agent-browser snapshot -i -C # find the Xero section ref
agent-browser scrollintoview @eN # scroll Xero section into view
agent-browser snapshot -i -C # re-snapshot for in-view refs
```
Do NOT use `eval` with `scrollIntoView()` — prefer the native
`agent-browser scrollintoview` command (same convention as
`xero-browser` skill).
## Account code guidance
Before guessing an account code, consult the local accounting guidance
for your workspace — typically a file under your project's notes
directory, an environment variable like `$ACCOUNTING_NOTES`, or a
project-level CLAUDE.md / AGENTS.md entry. Account-code conventions
vary per Xero organisation, so never rely on memorised codes from
another tenant.
## References
| Topic | File |
|---------------------------------------------------------------|------------------------------------------------------------|
| Field IDs and how to set values via JS | [references/fields.md](references/fields.md) |
| Uploading PDFs / images | [references/uploading.md](references/uploading.md) |
| Downloading and reading Hubdoc PDFs | [references/downloading.md](references/downloading.md) |
| Searching for documents | [references/searching.md](references/searching.md) |
| End-to-end review-tab process (per-document workflow) | [references/review-process.md](references/review-process.md) |
| Duplicate-document detection, decision, trashing, drawer close | [references/duplicates.md](references/duplicates.md) |
| Failed-tab processing (validation errors and re-publishing) | [references/failed-tab.md](references/failed-tab.md) |
Load the relevant reference for the specific subtask. The review-process
reference is the main per-document workflow and is needed for any
document review session; the others are loaded on demand.Related Skills
xlsx-to-csv
Convert XLSX spreadsheets (single or multi-sheet) to CSV files you can read and grep. Use whenever you need to process an .xlsx report from Xero, Cryptio, bank exports, or any tool that delivers spreadsheet output.
xero-mcp
Use the Xero MCP server — obtain/refresh OAuth2 bearer tokens, troubleshoot authentication, and pick up other operational notes for working with Xero MCP tools. Use when Xero MCP tools fail with authentication errors, when the bearer token has expired (tokens last ~30 min), before starting any Xero workflow, or for general guidance on Xero MCP usage.
xero-browser
General Xero browser automation notes. Use when automating any Xero page with agent-browser — covers non-standard UI patterns, waiting, and dropdown menus.
test-running
Run tests according to repository guidelines. Use after linting passes, before staging changes.
task-orchestration
Orchestrate the complete development workflow for implementing sub-tasks from a task list. Use for end-to-end feature implementation with quality controls.
task-implementation
Implement a single sub-task from a task list. Use when working on feature development with existing task lists.
task-generation
Generate a detailed task list from a PRP. Use after a PRP is created and ready for implementation planning.
subagent-authoring
Create subagent definitions for Claude Code and OpenCode that delegate to skills. Use when creating new subagents or refactoring existing ones to follow the delegation pattern.
slow-command-running
Pipe long running commands through tee(1) to allow watching output and repeated analyses without rerunning
skill-authoring
Create and maintain Claude Code skills following Anthropic best practices. Use when building new skills, refactoring existing ones, or ensuring skills follow official guidelines for structure, naming, progressive disclosure, and testing.
safe-rm
Safely delete files / directories without asking for permission
prp-generation
Generate a Product Requirements Prompt (PRP) from a feature description. Use when starting work on a new feature.