release: v2.0.1 - public mirror release

Documentation and metadata patch on v2.0.0 that adapts the release
surface for the public AgriciDaniel/claude-ads repository. No
code-contract, scoring, catalog, or behavior changes; claude-ads-core
stays 2.0.0 because the dependency evidence chain pins pyproject.toml
by SHA-256 and no library code changed.

- Retarget user-facing links (README install paths, SUPPORT, SECURITY,
  CODE_OF_CONDUCT, CONTRIBUTING, issue templates, CITATION.cff, plugin
  and marketplace manifests) from the private org repo to the public
  repo so installation, issues, discussions, and private vulnerability
  reporting work without org access.
- Retarget installer default clone source (install.sh, install.ps1),
  the PDF report footer, and the fetch User-Agent contact URL.
- Keep signed review-evidence provenance on the canonical org subject.
- Add the dual-distribution note and native plugin commands to README.
- Bump plugin, marketplace, and citation versions to 2.0.1.

Verified: scripts/release.py audit green (339 tracked files); full
pytest suite green locally (506 passed, Python 3.11, hash-locked
dependencies); range 283d9d4..HEAD scanned for secrets, personal
emails, and local paths (clean). pip-audit: dev lock clean; runtime
lock reports three known pillow 12.2.0 advisories
(PYSEC-2026-2254/2256/2257) tracked for a dependency-refresh patch.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Agrici Daniel
2026-07-13 23:18:59 +03:00
parent 7a8810f67c
commit 669c7608ec
15 changed files with 66 additions and 26 deletions
+3 -3
View File
@@ -5,19 +5,19 @@
},
"metadata": {
"description": "Claude-first, portable paid-media operations across 12 advertising platforms.",
"version": "2.0.0"
"version": "2.0.1"
},
"plugins": [
{
"name": "claude-ads",
"source": "./",
"description": "Claude-first, portable paid-media operations across 12 advertising platforms with source-grounded audits, deterministic scoring, lifecycle workflows, versioned JSON reports, and capability-gated account changes.",
"version": "2.0.0",
"version": "2.0.1",
"author": {
"name": "AgriciDaniel"
},
"homepage": "https://agricidaniel.com/blog/claude-code-ad-agency",
"repository": "https://github.com/AI-Marketing-Hub/claude-ads",
"repository": "https://github.com/AgriciDaniel/claude-ads",
"license": "MIT",
"category": "marketing",
"tags": [
+2 -2
View File
@@ -1,13 +1,13 @@
{
"name": "claude-ads",
"version": "2.0.0",
"version": "2.0.1",
"description": "Claude-first, portable paid-media operations for Google, Meta, YouTube, LinkedIn, TikTok, Microsoft, Apple, Amazon, Reddit, Pinterest, Snapchat, and X. Source-grounded audits, plans, creative workflows, monitoring, experiments, versioned JSON reports, deterministic scoring, and capability-gated account changes.",
"author": {
"name": "AgriciDaniel",
"url": "https://github.com/AgriciDaniel"
},
"homepage": "https://agricidaniel.com/blog/claude-code-ad-agency",
"repository": "https://github.com/AI-Marketing-Hub/claude-ads",
"repository": "https://github.com/AgriciDaniel/claude-ads",
"license": "MIT",
"keywords": [
"agent-skills",
+1 -1
View File
@@ -1,5 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: Feature Requests & General Questions
url: https://github.com/AI-Marketing-Hub/claude-ads/discussions
url: https://github.com/AgriciDaniel/claude-ads/discussions
about: Share ideas, ask questions, and discuss improvements in Discussions
+1 -1
View File
@@ -6,7 +6,7 @@ body:
- type: markdown
attributes:
value: |
Have a feature idea? You can also discuss it in [GitHub Discussions](https://github.com/AI-Marketing-Hub/claude-ads/discussions) for community input before opening a formal request.
Have a feature idea? You can also discuss it in [GitHub Discussions](https://github.com/AgriciDaniel/claude-ads/discussions) for community input before opening a formal request.
- type: textarea
id: problem
+25
View File
@@ -5,6 +5,31 @@ All notable changes to claude-ads are documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [2.0.1] - 2026-07-13
Documentation and metadata patch on top of v2.0.0 for the public mirror
release. No code-contract, scoring, catalog, or behavior changes.
### Changed
* **Public release surface**: user-facing repository links in the README
install paths, `SUPPORT.md`, `SECURITY.md`, `CODE_OF_CONDUCT.md`,
`CONTRIBUTING.md`, the issue templates, `CITATION.cff`, and the plugin and
marketplace manifests now point to the public `AgriciDaniel/claude-ads`
repository, so installation, issues, discussions, and private vulnerability
reporting work without AI-Marketing-Hub org access. The community mirror
stays documented for AI Marketing Hub Pro members.
* **Installer default clone source** (`install.sh`, `install.ps1`) retargeted
from the private org repository to the public repository so remote-source
installs can clone it without org credentials.
* **Runtime attribution URLs**: the PDF report footer (`generate_report.py`)
and the page-fetch User-Agent contact URL (`fetch_page.py`) now reference
the public repository. Signed review-evidence provenance
(`review_evidence.py`, review templates) intentionally keeps the canonical
org subject.
* **README**: added the dual-distribution note and the native Claude Code
plugin install commands.
## [2.0.0] - 2026-07-12
Major architecture release for professional paid-media operations.
+4 -4
View File
@@ -11,11 +11,11 @@ abstract: >
authors:
- alias: AgriciDaniel
name-particle: ""
repository-code: "https://github.com/AI-Marketing-Hub/claude-ads"
url: "https://github.com/AI-Marketing-Hub/claude-ads"
repository-code: "https://github.com/AgriciDaniel/claude-ads"
url: "https://github.com/AgriciDaniel/claude-ads"
license: MIT
version: "2.0.0"
date-released: "2026-07-12"
version: "2.0.1"
date-released: "2026-07-13"
keywords:
- paid advertising
- google ads
+1 -1
View File
@@ -48,7 +48,7 @@ Instances of abusive, harassing, or otherwise unacceptable behavior may be repor
to the project maintainer at:
- **GitHub**: [@AgriciDaniel](https://github.com/AgriciDaniel)
- **Private report**: [GitHub Security Advisory](https://github.com/AI-Marketing-Hub/claude-ads/security/advisories/new)
- **Private report**: [GitHub Security Advisory](https://github.com/AgriciDaniel/claude-ads/security/advisories/new)
All complaints will be reviewed and investigated promptly and fairly.
+2 -2
View File
@@ -20,7 +20,7 @@ raw private research, local absolute paths, or agent transcripts.
## Development setup
```bash
git clone https://github.com/AI-Marketing-Hub/claude-ads.git
git clone https://github.com/AgriciDaniel/claude-ads.git
cd claude-ads
python -m venv .venv
.venv/bin/python -m pip install -e . -r requirements.txt -r requirements-dev.txt
@@ -91,7 +91,7 @@ deletion is unsupported in v2.
## Security reports
Do not open a public issue for a vulnerability. Use the repository's private
[GitHub Security Advisory](https://github.com/AI-Marketing-Hub/claude-ads/security/advisories/new)
[GitHub Security Advisory](https://github.com/AgriciDaniel/claude-ads/security/advisories/new)
channel and include the affected version, reproduction, and impact.
## Release work
+18 -3
View File
@@ -12,6 +12,14 @@ audits, plans, creative workflows, experiments, monitoring, and reports. It is
read-only by default. Live changes stay disabled until the exact platform and
operation pass approval, idempotency, verification, audit, and rollback gates.
> [!NOTE]
> Claude Ads ships from two homes: the **public release** at
> [`AgriciDaniel/claude-ads`](https://github.com/AgriciDaniel/claude-ads)
> (MIT, no membership required) and the **community mirror** at
> `AI-Marketing-Hub/claude-ads`, where
> [AI Marketing Hub Pro](https://www.skool.com/ai-marketing-hub-pro) members
> get early access and direct collaboration.
<p align="center">
<img src="assets/diagrams/how-it-works.svg" alt="Validated inputs flow through bounded workers into schema-valid findings and deterministic reports" width="100%">
</p>
@@ -83,10 +91,17 @@ runtime supports them.
Prefer the host's native plugin flow or a tagged release archive with a verified
SHA-256 checksum. Never pipe a remote installer directly to a shell.
From an authenticated local checkout of the private v2 branch:
For Claude Code, the native plugin flow is:
```text
/plugin marketplace add AgriciDaniel/claude-ads
/plugin install claude-ads@ai-marketing-hub-claude-ads
```
Or install from a local clone of the public repository:
```bash
git clone --branch v2 https://github.com/AI-Marketing-Hub/claude-ads.git
git clone https://github.com/AgriciDaniel/claude-ads.git
cd claude-ads
bash install.sh --source=local
```
@@ -101,7 +116,7 @@ bash install.sh --target=gemini --source=local --no-deps
PowerShell uses the same managed ownership model:
```powershell
git clone --branch v2 https://github.com/AI-Marketing-Hub/claude-ads.git
git clone https://github.com/AgriciDaniel/claude-ads.git
Set-Location claude-ads
.\install.ps1 -Source local
```
+1 -1
View File
@@ -5,7 +5,7 @@
If you discover a security vulnerability, please report it responsibly via the **private GitHub Security Advisory channel**:
1. **Do NOT open a public issue** (public issues expose the vulnerability before it can be patched).
2. Open a [GitHub Security Advisory](https://github.com/AI-Marketing-Hub/claude-ads/security/advisories/new) on this repo. This is the only supported private disclosure channel — do not email or DM.
2. Open a [GitHub Security Advisory](https://github.com/AgriciDaniel/claude-ads/security/advisories/new) on the public repo. This is the only supported private disclosure channel — do not email or DM.
3. Include: affected version (for example v2.0.0), reproduction steps, and impact assessment.
We aim to acknowledge reports within **48 hours** and provide an estimated resolution timeline within **7 days**.
+4 -4
View File
@@ -4,15 +4,15 @@
| Need | Where to go |
|------|-------------|
| **Bug report** | [Open a GitHub Issue](https://github.com/AI-Marketing-Hub/claude-ads/issues/new/choose) |
| **Feature request or question** | [GitHub Discussions](https://github.com/AI-Marketing-Hub/claude-ads/discussions) |
| **Security vulnerability** | [GitHub Security Advisory](https://github.com/AI-Marketing-Hub/claude-ads/security/advisories/new) (private) |
| **Bug report** | [Open a GitHub Issue](https://github.com/AgriciDaniel/claude-ads/issues/new/choose) |
| **Feature request or question** | [GitHub Discussions](https://github.com/AgriciDaniel/claude-ads/discussions) |
| **Security vulnerability** | [GitHub Security Advisory](https://github.com/AgriciDaniel/claude-ads/security/advisories/new) (private) |
| **Contributing** | See [CONTRIBUTING.md](CONTRIBUTING.md) |
## Before Opening an Issue
1. Check the [README](README.md); installation, usage, and FAQ cover the most common questions
2. Search [existing issues](https://github.com/AI-Marketing-Hub/claude-ads/issues) to avoid duplicates
2. Search [existing issues](https://github.com/AgriciDaniel/claude-ads/issues) to avoid duplicates
3. Include your OS, Python version, the command that failed, and the full error output
## Response Time
Vendored
+1 -1
View File
@@ -191,7 +191,7 @@ function Main {
}
$SkillDirResolved = [IO.Path]::GetFullPath((Join-Path $SkillBase "ads"))
$ManifestPath = [IO.Path]::GetFullPath((Join-Path $SkillBase ".claude-ads-$Target.manifest.json"))
$RepoUrl = "https://github.com/AI-Marketing-Hub/claude-ads"
$RepoUrl = "https://github.com/AgriciDaniel/claude-ads"
$StringComparer = if ($PathComparison -eq [StringComparison]::OrdinalIgnoreCase) {
[StringComparer]::OrdinalIgnoreCase
} else {
+1 -1
View File
@@ -24,7 +24,7 @@ set -euo pipefail
# possible via --target=...). Custom --skill-dir paths are validated against
# `;&|$()<>` ` `, leading dashes, `..` segments, and UNC-style paths.
REPO_URL="https://github.com/AI-Marketing-Hub/claude-ads"
REPO_URL="https://github.com/AgriciDaniel/claude-ads"
SCRIPT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
# ─────────────────────────────────────────────────────────────────────────────
+1 -1
View File
@@ -28,7 +28,7 @@ except ImportError:
DEFAULT_HEADERS = {
"User-Agent": "Mozilla/5.0 (compatible; ClaudeAds/1.7; +https://github.com/AI-Marketing-Hub/claude-ads)",
"User-Agent": "Mozilla/5.0 (compatible; ClaudeAds/1.7; +https://github.com/AgriciDaniel/claude-ads)",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Language": "en-US,en;q=0.5",
"Accept-Encoding": "gzip, deflate",
+1 -1
View File
@@ -627,7 +627,7 @@ def build_pdf(data: dict, output_path: str, brand_name: str = ""):
elements.append(Spacer(1, 6))
elements.append(Paragraph(
f"Report generated by claude-ads v{__version__} | "
"https://github.com/AI-Marketing-Hub/claude-ads",
"https://github.com/AgriciDaniel/claude-ads",
styles["RFooter"],
))