[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6FRW7J4P75BDNV3PR0EB342":3,"skill-same:01M6FRW7J4P75BDNV3PR0EB342":76},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":30,"linkOnly":31,"markdownContent":32,"markdownBody":33,"frontMatter":34,"refName":35,"commitSha":36,"skillDirectory":37,"forksCount":38,"repositoryHtmlUrl":39,"repositoryHomepageUrl":6,"ownerHtmlUrl":40,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":41,"install":42,"resources":55},"01M6FRW7J4P75BDNV3PR0EB342","pathe-movie",null,"Lookup Pathé Netherlands movies, posters, descriptions, cinemas, and showtimes via the Pathé JSON APIs. Trigger when the user mentions a Pathé movie\u002Fshow, wants a poster, asks about a description\u002Frating, or requests showtimes for a specific cinema.","kbarbel640-del\u002Fskills","kbarbel640-del","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F255315490?v=4","01M6CJPPQGCCESXMG3K7BBGQ5J","01M6CJPPX2PB2BCZERFVM2C2B3",1,"MIT","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fhumboldtjs\u002Fpathe-movie\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29],"movie","pathe movie","lookup","json","user","show","poster","trigger","via","about","cinema","requests","2026-11-10 10:12:30",false,"---\nname: pathe-movie\ndescription: Lookup Pathé Netherlands movies, posters, descriptions, cinemas, and showtimes via the Pathé JSON APIs. Trigger when the user mentions a Pathé movie\u002Fshow, wants a poster, asks about a description\u002Frating, or requests showtimes for a specific cinema.\n---\n\n# Pathé Movie Skill\n\n## Summary\n- Always talk to the `https:\u002F\u002Fwww.pathe.nl\u002Fapi` endpoints with the required browserlike headers (see `scripts\u002Fpathe_movie.py`).\n- Use the config at `config\u002Fpathe_movie_config.json` to know which cinemas to assume unless the user explicitly names a different cinema.\n- Rely on `scripts\u002Fpathe_movie.py` for reusable helpers (sanitizing queries, fuzzy matching, best-match selection, and fetching downstream endpoints).\n- When uncertain, reference `references\u002Fapi.md` for payload shape, field names, and expected response structures.\n\n## Search flow\n1. Clean the user’s movie name by removing filler words (`the`, `a`, `an`, `of`, `in`, `on`, `for`, `and`).\n2. Call `\u002Fapi\u002Fsearch\u002Ffull?q=...` with the sanitized query.\n3. If multiple entries return, run a fuzzy title match (difflib) to pick the closest `title`. Keep the `slug`, `poster` (use `poster.lg`), and `contentRating` fields for later requests.\n4. If a poster is required, return the `poster.lg` URL (fall back to `poster.md`\u002F`posterPath` when necessary).\n\n## Movie detail flow\n- Given a slug, call `\u002Fapi\u002Fshow\u002F{slug}?language=nl`.\n- Pull `contentRating.description` and `synopsis` (some entries have `null`; handle gracefully) plus any extras such as `genres`, `directors`, `actors`, and `trailers` as context.\n- Poster references now live under `posterPath` before falling back to the search response’s `poster`.\n\n## Cinema flow\n- Query `\u002Fapi\u002Fshow\u002F{slug}\u002Fcinemas?language=nl`. Filter the returned cinema keys against `approvedCinemas` in the config unless the user asks for others.\n- For each cinema we need more detail about, call `\u002Fapi\u002Fcinema\u002F{cinema}?language=nl` to fetch the official `name`, `citySlug`, and `services`\u002F`alerts` metadata.\n\n## Showtimes\n- Use `\u002Fapi\u002Fshow\u002F{slug}\u002Fshowtimes\u002F{cinema}?language=en` to get schedules. Responses are dictionaries keyed by date (`YYYY-MM-DD`). Each value is an array of showtimes; every entry contains at least a `time` string (plus `screen`, optional `language`, `format`, etc.).\n- If the array is empty, return a note that there are currently no scheduled showings.\n\n## Testing notes\n- Ran `\u002Fapi\u002Fsearch\u002Ffull?q=matrix` to confirm the payload includes `slug`, `title`, `poster`, `contentRating`, and `genres`.\n- Called `\u002Fapi\u002Fshow\u002Fthe-matrix-41119` to verify `contentRating.description`, `synopsis`, and `posterPath` fields; the synopsis can be null and the posterPath may be missing, so always null-check.\n- Queried `\u002Fapi\u002Fcinema\u002Fpathe-zaandam` to inspect the returned `name`, `citySlug`, and service metadata (there is no `shows` list, so the cinema object is mostly static info).\n- Hit `\u002Fapi\u002Fshow\u002Firon-lung-51335\u002Fshowtimes\u002Fpathe-zaandam` to confirm the endpoint returns a list; it was empty for that slug, showing you must handle zero-showtime responses.\n- Pulled `\u002Fapi\u002Fshows?language=nl` to understand the bulk structure: dozens of entries with `slug`, `posterPath`, `contentRating`, `genres`, and `next24ShowtimesCount`.\n\n## Media delivery notes\n- Always download poster images (and extra stills) locally before sending them through WhatsApp. Save them under `\u002Ftmp` or another temporary location so the gateway can read the file.\n- When the user explicitly requests a poster via WhatsApp, attach the local path in the `message` tool `media` field (e.g., `\u002Ftmp\u002Fbluey_poster.jpg`). The WhatsApp docs describe that outbound media accepts local paths, so this ensures the actual image is delivered instead of a URL.\n- Keep the text part of the `message` tool call descriptive (e.g., \"Here’s the Bluey poster you asked for\"), and rely on the downloaded file for the visual.\n\nFollow these instructions whenever the user asks about search, posters, descriptions, cinema availability, or showtimes so the skill always produces accurate Pathé Netherlands results.","# Pathé Movie Skill\n\n## Summary\n- Always talk to the `https:\u002F\u002Fwww.pathe.nl\u002Fapi` endpoints with the required browserlike headers (see `scripts\u002Fpathe_movie.py`).\n- Use the config at `config\u002Fpathe_movie_config.json` to know which cinemas to assume unless the user explicitly names a different cinema.\n- Rely on `scripts\u002Fpathe_movie.py` for reusable helpers (sanitizing queries, fuzzy matching, best-match selection, and fetching downstream endpoints).\n- When uncertain, reference `references\u002Fapi.md` for payload shape, field names, and expected response structures.\n\n## Search flow\n1. Clean the user’s movie name by removing filler words (`the`, `a`, `an`, `of`, `in`, `on`, `for`, `and`).\n2. Call `\u002Fapi\u002Fsearch\u002Ffull?q=...` with the sanitized query.\n3. If multiple entries return, run a fuzzy title match (difflib) to pick the closest `title`. Keep the `slug`, `poster` (use `poster.lg`), and `contentRating` fields for later requests.\n4. If a poster is required, return the `poster.lg` URL (fall back to `poster.md`\u002F`posterPath` when necessary).\n\n## Movie detail flow\n- Given a slug, call `\u002Fapi\u002Fshow\u002F{slug}?language=nl`.\n- Pull `contentRating.description` and `synopsis` (some entries have `null`; handle gracefully) plus any extras such as `genres`, `directors`, `actors`, and `trailers` as context.\n- Poster references now live under `posterPath` before falling back to the search response’s `poster`.\n\n## Cinema flow\n- Query `\u002Fapi\u002Fshow\u002F{slug}\u002Fcinemas?language=nl`. Filter the returned cinema keys against `approvedCinemas` in the config unless the user asks for others.\n- For each cinema we need more detail about, call `\u002Fapi\u002Fcinema\u002F{cinema}?language=nl` to fetch the official `name`, `citySlug`, and `services`\u002F`alerts` metadata.\n\n## Showtimes\n- Use `\u002Fapi\u002Fshow\u002F{slug}\u002Fshowtimes\u002F{cinema}?language=en` to get schedules. Responses are dictionaries keyed by date (`YYYY-MM-DD`). Each value is an array of showtimes; every entry contains at least a `time` string (plus `screen`, optional `language`, `format`, etc.).\n- If the array is empty, return a note that there are currently no scheduled showings.\n\n## Testing notes\n- Ran `\u002Fapi\u002Fsearch\u002Ffull?q=matrix` to confirm the payload includes `slug`, `title`, `poster`, `contentRating`, and `genres`.\n- Called `\u002Fapi\u002Fshow\u002Fthe-matrix-41119` to verify `contentRating.description`, `synopsis`, and `posterPath` fields; the synopsis can be null and the posterPath may be missing, so always null-check.\n- Queried `\u002Fapi\u002Fcinema\u002Fpathe-zaandam` to inspect the returned `name`, `citySlug`, and service metadata (there is no `shows` list, so the cinema object is mostly static info).\n- Hit `\u002Fapi\u002Fshow\u002Firon-lung-51335\u002Fshowtimes\u002Fpathe-zaandam` to confirm the endpoint returns a list; it was empty for that slug, showing you must handle zero-showtime responses.\n- Pulled `\u002Fapi\u002Fshows?language=nl` to understand the bulk structure: dozens of entries with `slug`, `posterPath`, `contentRating`, `genres`, and `next24ShowtimesCount`.\n\n## Media delivery notes\n- Always download poster images (and extra stills) locally before sending them through WhatsApp. Save them under `\u002Ftmp` or another temporary location so the gateway can read the file.\n- When the user explicitly requests a poster via WhatsApp, attach the local path in the `message` tool `media` field (e.g., `\u002Ftmp\u002Fbluey_poster.jpg`). The WhatsApp docs describe that outbound media accepts local paths, so this ensures the actual image is delivered instead of a URL.\n- Keep the text part of the `message` tool call descriptive (e.g., \"Here’s the Bluey poster you asked for\"), and rely on the downloaded file for the visual.\n\nFollow these instructions whenever the user asks about search, posters, descriptions, cinema availability, or showtimes so the skill always produces accurate Pathé Netherlands results.",{"name":5,"description":7},"main","e7e336ac628c3e3bd771aff1aaa469c93778f94a","skills\u002Fhumboldtjs\u002Fpathe-movie",0,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del","2026-08-23 22:39:37",{"source":8,"skillName":5,"commands":43,"prompt":53,"zipAvailable":54},[44,47,50],{"tool":45,"command":46},"npx","npx skills add kbarbel640-del\u002Fskills --skill pathe-movie",{"tool":48,"command":49},"bunx","bunx skills add kbarbel640-del\u002Fskills --skill pathe-movie",{"tool":51,"command":52},"pnpm","pnpm dlx skills add kbarbel640-del\u002Fskills --skill pathe-movie","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fhumboldtjs\u002Fpathe-movie\u002FSKILL.md",true,[56,62,66,70],{"path":57,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":60,"sourceHtmlUrl":61},"_meta.json","REFERENCE","参考文档",285,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fhumboldtjs\u002Fpathe-movie\u002F_meta.json",{"path":63,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":64,"sourceHtmlUrl":65},"config\u002Fpathe_movie_config.json",135,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fhumboldtjs\u002Fpathe-movie\u002Fconfig\u002Fpathe_movie_config.json",{"path":67,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":68,"sourceHtmlUrl":69},"references\u002Fapi.md",2390,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fhumboldtjs\u002Fpathe-movie\u002Freferences\u002Fapi.md",{"path":71,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":74,"sourceHtmlUrl":75},"scripts\u002Fpathe_movie.py","SCRIPT","脚本",2684,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fhumboldtjs\u002Fpathe-movie\u002Fscripts\u002Fpathe_movie.py",[77,108,137,157,163,183],{"skillNo":78,"name":79,"nameZh":6,"description":80,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":81,"categories":82,"keywords":88,"publishedAt":30},"01M6G8J55967D6281ACMKAKTEQ","crowd-prompting","A marketplace where AI agents improve prompts, system instructions, tool descriptions, and other text-based content with domain expertise from real-world operations — and earn tokens for valuable contributions.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzzadrian\u002Fcrowd-prompting\u002FSKILL.md",[83],{"categoryNo":84,"categoryName":85,"taxonomyType":86,"taxonomyTypeDesc":87},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107],"crowd prompting","prompting","api","with","tokens","domain","world","prompts","operations","instructions","text","tool","system","improve","productivity","marketplace","https","content","ai agents",{"skillNo":109,"name":110,"nameZh":6,"description":111,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":112,"categories":113,"keywords":119,"publishedAt":30},"01M6G8J0PKPAYVET6BWE8W4C26","dilemm-ai","Compete in DilemmAI, the prisoner's dilemma AI arena at dilemm.ai. Use when an OpenClaw agent wants to create an account, design and submit strategy prompts for their bot, enter matchmaking, analyze historical matches and leaderboards, and iterate on bot strategy. Requires headless browser automation (no API available yet).","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzyori\u002Fdilemm-ai\u002FSKILL.md",[114],{"categoryNo":115,"categoryName":116,"taxonomyType":117,"taxonomyTypeDesc":118},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[120,91,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,96,136],"dilemm ai","arena","analyze","browser","openclaw agent","create","automation","browser automation","bot","openclaw","design","strategy","headless","compete","submit","matchmaking","use",{"skillNo":138,"name":139,"nameZh":6,"description":140,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":141,"categories":142,"keywords":146,"publishedAt":30},"01M6G8HWAF3K9SW7NP3Z83CPJ6","arxiv-paper-reviews","Interact with arXiv Crawler API to fetch papers, read reviews, and submit comments. Use when working with arXiv papers, fetching paper lists by date\u002Fcategory\u002Finterest, viewing paper details with comments, or submitting paper reviews via API at http:\u002F\u002F150.158.152.82:8000.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzxrys\u002Fweak-accept\u002FSKILL.md",[143],{"categoryNo":144,"categoryName":145,"taxonomyType":117,"taxonomyTypeDesc":118},"01JBSEEDCAT000000000000021","资料检索与研究",[147,148,149,150,151,152,153,92,154,134,136,155,91,156,26],"arxiv paper reviews","reviews","arxiv","paper","crawler","papers","comments","fetch","read","http",{"skillNo":158,"name":139,"nameZh":6,"description":140,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":159,"categories":160,"keywords":162,"publishedAt":30},"01M6G8HQJ7N7WMY6YV7D7SSJ16","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzxrys\u002Farxiv-paper-reviews\u002FSKILL.md",[161],{"categoryNo":144,"categoryName":145,"taxonomyType":117,"taxonomyTypeDesc":118},[150,149,148,147,26,152,153,92,151,134,136,154,155,91,156],{"skillNo":164,"name":165,"nameZh":6,"description":166,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":167,"categories":168,"keywords":169,"publishedAt":30},"01M6G8HM95Y64JNVFC2HN4E2BG","git-summary","Get a quick summary of the current Git repository including status, recent commits, branches, and contributors.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzweack\u002Fgit-summary\u002FSKILL.md",[],[170,171,172,173,174,175,176,177,178,179,180,181,182],"git","summary","git summary","commits","repository","win32","status","linux","contributors","true","quick","get","branches",{"skillNo":184,"name":185,"nameZh":6,"description":186,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":187,"categories":188,"keywords":193,"publishedAt":30},"01M6G8HGEGF05CNEJCGVYFSC4R","agent-constitution","Interact with AgentConstitution governance contracts on Base Sepolia. Check compliance, read rules, log actions, query governance state.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fztsalexey\u002Fagent-constitution\u002FSKILL.md",[189,190],{"categoryNo":115,"categoryName":116,"taxonomyType":117,"taxonomyTypeDesc":118},{"categoryNo":191,"categoryName":192,"taxonomyType":86,"taxonomyTypeDesc":87},"01JBSEEDCAT000000000000037","律师与法务",[194,195,196,197,92,198,199,35,200,155,201,202,203,204,205,105,206,207,208],"agent constitution","constitution","contracts","tree","query","base","log","check","Rules","projects","compliance","actions","state","governance","github"]