{
  "markdown": "# Property Tax Appeal Skill\n\n<img src=\"docs/assets/property-tax-appeal-icon.png\" alt=\"Property Tax Appeal icon\" width=\"180\">\n\nAn evidence-led Agent Skill that triages US residential property-tax assessment disputes and prepares market-value review and appeal packets from two minimum inputs:\n\n- Property address\n- A value shown on the current assessment notice\n\nThe skill identifies whether that number is market, appraised, assessed, equalized, or taxable value; verifies the parcel and appeal rules; researches comparable sales, APNs, and stable transaction IDs; derives a defensible requested value; fact-checks the record; and generates matching upload-ready English Markdown and PDF files.\n\nScope is intentionally limited to cases where market value is a material appeal ground. The skill\nstops after route, form, and deadline research for unequal/non-uniform appraisal, exemption,\nclassification, ownership, or other disputes that require a different evidence model.\n\n## Install\n\nUse the portable Agent Skills installer for Codex, Claude Code, Cursor, OpenCode, and other compatible agents:\n\n```bash\nnpx --yes skills@1.5.23 add https://github.com/mushanyoung/property-tax-appeal-skll/tree/v3.1.0 \\\n  --skill prepare-property-tax-appeal\n```\n\nThe tag-qualified URL is locked after the associated GitHub immutable release is published.\nCommands that add the repository as a native plugin track the repository's current default branch;\nuse the attested, versioned release archives when reproducible installation is required.\n\nOther native installation options:\n\n| Platform | Installation |\n| --- | --- |\n| OpenAI Codex plugin | `codex plugin marketplace add mushanyoung/property-tax-appeal-skll`, then `codex plugin add property-tax-appeal@property-tax-appeal-skll` |\n| Claude Code plugin | `/plugin marketplace add mushanyoung/property-tax-appeal-skll`, then `/plugin install property-tax-appeal@property-tax-appeal-skll` |\n| Gemini CLI extension | `gemini extensions install https://github.com/mushanyoung/property-tax-appeal-skll` |\n| GitHub Copilot / GitHub CLI | `gh skill install mushanyoung/property-tax-appeal-skll prepare-property-tax-appeal@v3.1.0` |\n\nSee [INSTALL.md](INSTALL.md) for agent-specific paths, scopes, and dependency details.\n\n## Public Listings\n\nThese listings were checked on August 19, 2026. Registry-specific version labels can differ from\nthe repository's SemVer release when a registry assigns its own version.\n\n| Registry | Listing | Status |\n| --- | --- | --- |\n| GitHub Releases | [Immutable `v3.1.0` release](https://github.com/mushanyoung/property-tax-appeal-skll/releases/tag/v3.1.0) | Live |\n| skills.sh | [prepare-property-tax-appeal](https://www.skills.sh/mushanyoung/property-tax-appeal-skll/prepare-property-tax-appeal) | Live |\n| ClawHub | [prepare-property-tax-appeal](https://clawhub.ai/mushanyoung/skills/prepare-property-tax-appeal) | Live; registry package licensed MIT-0 |\n| Tessl | [`mushan/prepare-property-tax-appeal` 3.1.0](https://tessl.io/registry/mushan/prepare-property-tax-appeal/3.1.0) | Live; moderation and security checks passed |\n| askill | [Skill 703844](https://askill.sh/skills/703844) | Live |\n| Agent Skill Hub | [`mushanyoung/prepare-property-tax-appeal`](https://agentskillhub.dev/u/mushanyoung/sk/prepare-property-tax-appeal) | Live as `2026.08.19.1` |\n\n## Marketplace Reviews\n\nThese review states were confirmed by the publisher on August 19, 2026. A pending review is not a\npublic listing and does not imply approval.\n\n| Marketplace | Status |\n| --- | --- |\n| OpenAI Plugins Directory | Deferred; not submitted |\n| Claude official marketplace | Submitted; review pending |\n| Cursor Marketplace | Submitted; review pending |\n\n## Core Method\n\n- Verify the jurisdiction, valuation date, filing path, deadline, subject APN, and property characteristics from current sources.\n- Require an explicit residential-use verification supported by a parcel-record source; stop packet generation for non-residential or unverified-use subjects.\n- Explicitly designate the sales-comparable market value and preserve assessed, equalized, capped, exemption-adjusted, and authority-specific taxable values as sourced nodes.\n- Define the legally usable sale-date window from current official guidance before screening comparable sales.\n- Build and record a neutral comparable pool before selecting advocacy evidence.\n- Give every candidate a stable transaction or recording ID; repeated APNs with different sales are not duplicates.\n- Prefer exact bedroom and bathroom matches when enough credible inventory exists.\n- Optionally exclude sales above the current market-value comparison basis from the final table only after one-schema scoring; equally or more relevant omitted evidence is automatically disclosed.\n- Treat a reported sale-price range as an interval, never describe its lower endpoint as exact consideration, and exclude provisional endpoints from point statistics.\n- Separate the requested value from the realistic likely-outcome range.\n- Require explicit owner approval before rendering any declaration or signature block.\n- Accept owner-provided MLS or closing records as locator-free private transaction evidence only when each comparable also has an independent public parcel record.\n- Generate private, matching Markdown and PDF without clobbering existing files, then compare the facts and visually inspect every PDF page.\n\n## Nationwide Coverage\n\nThe skill includes a routing registry for market-value appeals in all 50 states and the District of Columbia. It maps each state to the common local filing structure, including assessor review, boards of equalization, appraisal review boards, value adjustment boards, boards of revision, tax boards, grievance proceedings, abatement applications, and state-level appeal ladders. A forum named a board of equalization does not imply that this builder supports a separate unequal-appraisal claim.\n\nLook up the initial route for a state with:\n\n```bash\npython3 skills/prepare-property-tax-appeal/scripts/lookup_jurisdiction.py --state CA\npython3 skills/prepare-property-tax-appeal/scripts/lookup_jurisdiction.py --state Texas --json\n```\n\nThe registry is a routing aid, not a deadline database. Every case must verify the exact county, city, township, parish, borough, or district authority; current official form; filing deadline; valuation date; evidence window; submission method; and whether an informal review preserves formal appeal rights.\n\n## Repository Layout\n\n```text\ngemini-extension.json\nplugin.json\nplugins/property-tax-appeal/\n  .codex-plugin/plugin.json\n  .claude-plugin/plugin.json\n  assets/property-tax-appeal-icon.png\n  skills/prepare-property-tax-appeal/\nskills/prepare-property-tax-appeal/\n  .tessl-plugin/plugin.json\n  SKILL.md\n  agents/openai.yaml\n  assets/case-example.json\n  assets/case-template.json\n  references/\n  scripts/\ntests/\nmarketplace/submission.json\nmarketplace/README.md\nPRIVACY.md\nSECURITY.md\nSUPPORT.md\nTERMS.md\n.agents/plugins/marketplace.json\n.claude-plugin/marketplace.json\n```\n\n## Local Use\n\nRead [`skills/prepare-property-tax-appeal/SKILL.md`](skills/prepare-property-tax-appeal/SKILL.md),\ncopy the fail-closed `assets/case-template.json`, research and cite the case facts, and change each\nhuman-review gate only after performing that check. `assets/case-example.json` is a fictional test\nfixture, not a pre-approved starting point. Then run:\n\n```bash\npython3 skills/prepare-property-tax-appeal/scripts/build_appeal_packet.py case.json \\\n  --output-dir output \\\n  --basename property-address-appeal\n```\n\nThe builder creates private files and refuses to overwrite an existing packet by default. Markdown\nretains the case's complete Unicode text. PDF output uses only the unembedded PDF Base 14\n`Helvetica` and `Helvetica-Bold` fonts. Before creating a PDF, the builder verifies every character\nagainst its supported WinAnsi glyph set. If any character is unsupported, PDF generation stops,\nlists the affected Unicode code points, and directs the user to use an official English spelling or\ngenerate Markdown only with `--no-pdf`. Use `--force` only after confirming that the existing\nMarkdown/PDF pair belongs to the same case.\n\n## Python Support\n\nVersion 3 supports CPython 3.11 through 3.14 and tests every supported minor version on each pull\nrequest and push. Python 3.14 additionally runs coverage, security, repository, and PDF smoke\nchecks. Dependency locks are universal across the supported range and are installed with hashes.\nNo weekly Python test matrix or Python 3.15 development job is used.\n\nThe deprecated v2 font-bearing release and tag were retired so new clones do not download that\nfont through Git history. Repository checks fetch and inspect complete reachable history, reject\nfont-program paths, and verify that the retired font blob is absent from the local object database.\n\nInstall the PDF dependency when needed:\n\n```bash\npython3 -m pip install --require-hashes \\\n  -r skills/prepare-property-tax-appeal/scripts/requirements.lock\n```\n\n## Scope\n\nThis repository prepares an evidence attachment and filing analysis. It does not replace legal advice, appraisal services, official forms, or verification of current local deadlines and submission requirements. A property owner must review the final facts and sign or submit any required government form.\n\nThe project operates no case-data backend. Review the public [privacy policy](PRIVACY.md),\n[terms of use](TERMS.md), [support policy](SUPPORT.md), and [security policy](SECURITY.md) before\nusing it with private documents. Do not place real assessment notices, owner records, addresses,\naccount numbers, or appeal packets in public issues.\n\n## Release Maintenance\n\nThe root `skills/` directory is canonical. Synchronize and validate the self-contained plugin copy before committing:\n\n```bash\npython3 scripts/sync_distributions.py\npython3 scripts/check_repo.py\n```\n\nBuild deterministic `.skill` and `.zip` release assets with:\n\n```bash\npython3 scripts/package_skill.py\n```\n\nRelease packaging refuses tracked skill, plugin, or version inputs that differ from `HEAD`.\n\n## Testing\n\nThe test suite covers ratio-state value separation, closed-world schema and typed-source validation,\nlocator-free private owner attachments, bounded adversarial candidate sets and diagnostics, linear\ntransaction indexing, contrary-evidence handling, truth-conditional prose, adversarial Markdown/URL\ninput, DNS-rebinding-resistant link checks, malformed HTTP boundaries, Unicode-preserving Markdown,\nsafe rejection of unsupported PDF characters, unembedded Base 14 font enforcement, failure-atomic\noutput, all jurisdiction-router modes, deterministic secure archives, clean universal hash-locked\ninstalls, distribution synchronization, security scans, release-branch ancestry, and release metadata\ncontracts.\n\n```bash\npython3 -m pip install --require-hashes -r requirements-test.lock\npython3 scripts/check_repo.py\npython3 -m coverage erase\npython3 -m coverage run -m unittest discover -s tests -v\npython3 -m coverage report\n```\n\nCI enforces at least 88% combined statement and branch coverage across the repository's deterministic Python scripts.\n\n## License\n\n[MIT](LICENSE)\n",
  "bytes": 11189,
  "sha": "2eda73183f65f285fa225f7b5b6c54f2ebb257ec56f1fc19dc91ea443f9f56ae",
  "repo_slug": "mushanyoung/property-tax-appeal-skll",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_mushanyoung_property_tax_appeal_skll_9eb438ff/readme"
}