Skip to content

Add anons auction skill#113

Open
ClawdiaETH wants to merge 10 commits intoBankrBot:mainfrom
ClawdiaETH:add-anons-auction-skill
Open

Add anons auction skill#113
ClawdiaETH wants to merge 10 commits intoBankrBot:mainfrom
ClawdiaETH:add-anons-auction-skill

Conversation

@ClawdiaETH
Copy link

@ClawdiaETH ClawdiaETH commented Feb 9, 2026

Note

Medium Risk
Adds scripts that construct and submit real Base mainnet transactions via Bankr and depend on onchain/Bankr API responses, so mistakes in calldata/value handling or parsing could cause failed or unintended transactions.

Overview
Adds a new anons-auction skill that lets agents participate in Anons DAO NFT auctions on Base: fetch live auction state directly from Base RPC, enforce ERC-8004 registration, compute the 5% minimum bid, and submit createBid/settleCurrentAndCreateNewAuction transactions via the Bankr API.

Updates README.md to list the new anons-auction skill and a new community skills/x-engagement documentation skill, and documents the new scripts/usage in anons-auction/SKILL.md.

Written by Cursor Bugbot for commit aa68b1d. This will update automatically on new commits. Configure here.

@gamalbuild
Copy link
Collaborator

Hi @ClawdiaETH 👋

This PR has merge conflicts with main that need to be resolved before it can be merged. The conflict is likely in README.md since multiple PRs touch that file.

Could you please:

  1. Rebase onto main (or merge main into your branch) to resolve the conflicts
  2. Remove the duplicate x-engagement skill — you have it in both clawdia/x-engagement/SKILL.md and skills/x-engagement/SKILL.md. Please keep only one location (recommend skills/x-engagement/)

The skill itself looks great — production-quality scripts, good error handling. Just need the conflicts resolved and the duplicate cleaned up. Thanks! 🐪

@ClawdiaETH ClawdiaETH force-pushed the add-anons-auction-skill branch from 16826e2 to e2a59a5 Compare February 16, 2026 16:20

---

*Built by [@Clawdia_ETH](https://x.com/Clawdia_ETH) — learning by doing, sharing what works.*
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unrelated x-engagement skill bundled in auction PR

Low Severity

This PR is titled "Add anons auction skill" but also adds a 561-line skills/x-engagement/SKILL.md file and its corresponding README.md table entry. The x-engagement skill (Twitter/X engagement) has no relationship to the anons-auction feature. The PR reviewer also flagged this, noting it may be a duplicate that exists in another location. Bundling unrelated changes makes the PR harder to review and potentially introduces unwanted content.

Additional Locations (1)

Fix in Cursor Fix in Web

@ClawdiaETH ClawdiaETH force-pushed the add-anons-auction-skill branch from e07f7c2 to 68b8286 Compare February 19, 2026 07:47
ClawdiaETH and others added 9 commits February 19, 2026 08:59
- Algorithm mechanics (engagement weights, 2-hour window)
- Account setup (Automated by label)
- Engagement patterns (reply strategy, priority monitoring)
- Tooling (CLI for reading, browser for posting)
- Content strategy and compliance guidelines

Built by @Clawdia_ETH - learning by doing, sharing what works.
Key additions:
- Hard daily limits (15 tweets max, 2-3/hour, 1 per thread)
- Duplicate reply prevention with tweet ID tracking
- Rate limit error codes (226, 344) and recovery strategy
- Quality gate checklist before every post
- Community feedback matters section

Learned the hard way: hit rate limit + got 'looks spammy' feedback on 2026-01-29
Major updates:
- Added xai-search (Grok-powered real-time X + web search)
- Added x-trends (trending topics without API)
- Added x-api (Official X API with OAuth 1.0a)
- Documented rate limit errors (226, 344) and recovery strategies
- Added duplicate reply prevention workflow with tracking file
- Quality gate checklist before every post
- Lessons learned section with real-world failures

New tool commands documented:
- xai-search x/web/both "query"
- x-trends --country us --json
- x-post "tweet" / x-post --reply <id> "text"

Rate limit guidance:
- 15 max daily, 2-3 per hour, 1 per thread
- Community feedback matters section

🐚 Built by @Clawdia_ETH
Comprehensive Twitter/X engagement skill for AI agents:
- Algorithm mechanics (engagement weights, 2-hour window, reach killers/boosters)
- Account setup with Automated label
- Tool integrations (bird CLI, xai-search, twitter-dom-automation)
- Rate limit management and duplicate prevention
- Media attachment strategies (screenshots, GIFs)
- Quality gates and compliance

By @Clawdia_ETH
- Add Direct DOM Method section (preferred over snapshot-based clicking)
- Link to twitter-dom-automation library
- Document CORS gotcha (inline injection required)
- Add lessons learned: Direct DOM > Virtual Mouse
- Enables AI agents to bid on Anons DAO auctions via Bankr
- Includes 5 helper scripts: registration check, auction status, min bid calc, bid submission, settlement
- Follows BankrBot conventions (curl + jq, no npm deps)
- Integrates with ERC-8004 agent registry on Base
- Comprehensive error handling and pre-flight checks

Anons DAO is the first AI agent DAO on Base with daily 12-hour auctions.
Anons = Agent + Nouns. Built by @ClawdiaBotAI.
- Auction House: corrected to 0x51f5a9252A43F89D8eE9D5616263f46a0E02270F (was wrong in SKILL.md + all 3 scripts)
- Token: corrected to 0x1ad890FCE6cB865737A3411E7d04f1F5668b0686
- Treasury: corrected to Timelock 0x167b2f7Ce609Bf0117A148e6460A4Ca943f6dF32
- Voting period: 24h (was incorrectly listed as 48h; verified via votingPeriod() on Governor)
- Auction duration: note pending governance proposal to switch to 24h cycles
- Governance section: add live voting UI link (anons.lol/governance), dual-gating requirement
- Basescan link: updated to correct token address
- Inline Bankr tx JSON: updated to correct auction house address
auction-status.sh:
- Off-by-two: decode_address now uses offset 24 (was 26) for correct 40-char address
- Overflow: min bid calc uses awk instead of bash arithmetic (safe above 1.84 ETH)
- Negative time: time_remaining_seconds clamped to 0 when auction has ended

bid.sh:
- jq parse error: removed 'Response: ' prefix that made JSON invalid (2 occurrences)

check-registration.sh:
- Mislabel: 'Agent ID' renamed to 'ERC-8004 tokens held' (balanceOf returns count, not ID)

x-engagement:
- Removed duplicate clawdia/x-engagement/SKILL.md per reviewer request
- Canonical location: skills/x-engagement/
@ClawdiaETH ClawdiaETH force-pushed the add-anons-auction-skill branch from 16bb074 to aa68b1d Compare February 19, 2026 15:00
@ClawdiaETH
Copy link
Author

Thanks for the review! All issues addressed:

Cursor bot bugs fixed:

  • ✅ Off-by-two in decode_address: offset 24 (was 26) — now extracts correct 40-char address
  • ✅ Integer overflow in min bid calc: using awk instead of bash arithmetic (safe above 1.84 ETH)
  • ✅ Negative time_remaining_seconds: clamped to 0 when auction has ended
  • jq parse error in bid.sh: removed Response: prefix that broke JSON parsing (2 occurrences)
  • ✅ Mislabeled 'Agent ID' in check-registration.sh: now correctly says 'ERC-8004 tokens held'

Reviewer feedback:

  • ✅ Removed duplicate clawdia/x-engagement/SKILL.md — canonical is skills/x-engagement/
  • ✅ Rebased onto main, README.md conflicts resolved

Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 2 potential issues.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.


if [ -n "$ERROR" ] && [ "$ERROR" != "null" ]; then
echo "❌ Settlement failed: $ERROR"
echo "Response: $RESPONSE" | jq '.'
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Prefixed string breaks jq JSON parsing in settle script

Medium Severity

echo "Response: $RESPONSE" | jq '.' prepends the text "Response: " to the JSON before piping to jq, producing invalid JSON input like Response: {"error":...}. This causes jq to emit a parse error, and because set -e is active, the script terminates unexpectedly. The equivalent lines in bid.sh correctly use echo "$RESPONSE" | jq '.' without the prefix. The same issue appears on both the error path and the warning path.

Additional Locations (1)

Fix in Cursor Fix in Web


# Parse response
TX_HASH=$(echo "$RESPONSE" | jq -r '.transactionHash // .txHash // .hash // .result.hash // empty')
SUCCESS=$(echo "$RESPONSE" | jq -r '.success // empty')
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Extracted SUCCESS variable never checked in response handling

Low Severity

The SUCCESS variable is extracted from the Bankr API response on this line but is never referenced in any subsequent conditional. The response handling only checks ERROR and TX_HASH. If the API returns {"success": false, "transactionHash": "0x..."} (e.g., a confirmed but reverted transaction), the script would skip the error block and print "✅ Bid submitted!" — incorrectly reporting a failed bid as successful. The sibling script settle.sh avoids this by not extracting what it doesn't use.

Fix in Cursor Fix in Web

settle.sh: remove 'Response: ' prefix before jq (2 occurrences) — same bug
that was fixed in bid.sh, missed in settle.sh

bid.sh: check SUCCESS variable after extraction — if API returns
{success: false, transactionHash: '0x...'}, was previously undetected
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants