{
  "schemaVersion": "1.0",
  "item": {
    "slug": "church-account",
    "name": "Church Account",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/nathan-deepmm/church-account",
    "canonicalUrl": "https://clawhub.ai/nathan-deepmm/church-account",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/church-account",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=church-account",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/church-account"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/church-account",
    "agentPageUrl": "https://openagent3.xyz/skills/church-account/agent",
    "manifestUrl": "https://openagent3.xyz/skills/church-account/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/church-account/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Church Account (LDS/LCR)",
        "body": "Automate login and tasks on churchofjesuschrist.org."
      },
      {
        "title": "OAuth Flow",
        "body": "The church uses OAuth via id.churchofjesuschrist.org. Any protected page redirects to login:\n\nEnter username → click Next\nEnter password → click Verify\nRedirects back to target page with session cookies\n\nNo MFA or CAPTCHA is typically required. Playwright + playwright-stealth handles it cleanly."
      },
      {
        "title": "Credentials",
        "body": "Store in a password vault or environment variables:\n\nUsername (church account email or membership ID)\nPassword"
      },
      {
        "title": "Login with Playwright",
        "body": "import asyncio\nfrom playwright.async_api import async_playwright\nfrom playwright_stealth import Stealth\n\nasync def login(target_url=\"https://lcr.churchofjesuschrist.org\", cookies_path=\"/tmp/church_cookies.json\"):\n    async with async_playwright() as p:\n        browser = await p.chromium.launch(\n            headless=True,\n            args=[\"--no-sandbox\", \"--disable-blink-features=AutomationControlled\", \"--disable-dev-shm-usage\"]\n        )\n        context = await browser.new_context(\n            viewport={\"width\": 1920, \"height\": 1080},\n            user_agent=\"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 ...\"\n        )\n        page = await context.new_page()\n        await Stealth().apply_stealth_async(page)\n        await page.goto(target_url)\n\n        # Enter username\n        await page.fill('input[name=\"identifier\"]', USERNAME)\n        await page.click('button[type=\"submit\"]')\n\n        # Enter password\n        await page.wait_for_selector('input[type=\"password\"]')\n        await page.fill('input[type=\"password\"]', PASSWORD)\n        await page.click('button[type=\"submit\"]')\n\n        # Wait for redirect\n        await page.wait_for_url(f\"{target_url}/**\", timeout=30000)\n\n        # Save session\n        await context.storage_state(path=cookies_path.replace('.json', '_state.json'))\n        await browser.close()"
      },
      {
        "title": "Reusing a Session",
        "body": "After login, use saved storage state to skip re-authentication:\n\ncontext = await browser.new_context(\n    storage_state=\"/tmp/church_cookies_state.json\",\n    viewport={\"width\": 1920, \"height\": 1080},\n    user_agent=\"Mozilla/5.0 ...\"\n)\npage = await context.new_page()\nawait Stealth().apply_stealth_async(page)"
      },
      {
        "title": "Key URLs",
        "body": "ServiceURLLCR (Leader & Clerk Resources)https://lcr.churchofjesuschrist.orgWard Directoryhttps://directory.churchofjesuschrist.orgCalendarhttps://www.churchofjesuschrist.org/calendarDonationshttps://donations.churchofjesuschrist.orgTemple Reservationshttps://tos.churchofjesuschrist.orgMy Homehttps://www.churchofjesuschrist.org/my-homeAccount Settingshttps://id.churchofjesuschrist.org/account"
      },
      {
        "title": "LCR Sections",
        "body": "After login, LCR provides access to:\n\nMembership — member records, move-in/out, new members\nCallings — current callings, sustaining, setting apart\nMinistering & Welfare — assignments, needs\nFinance — tithing settlement, budget, donations\nMissionary — full-time and ward missionaries\nTemple — recommend status, temple activity\nReports — attendance, quarterly reports"
      },
      {
        "title": "Tips",
        "body": "Login sessions persist via cookies — no need to re-login every request\nHeadless Chrome with playwright-stealth avoids detection\nStorage state files contain auth tokens — treat as sensitive"
      }
    ],
    "body": "Church Account (LDS/LCR)\n\nAutomate login and tasks on churchofjesuschrist.org.\n\nLogin\nOAuth Flow\n\nThe church uses OAuth via id.churchofjesuschrist.org. Any protected page redirects to login:\n\nEnter username → click Next\nEnter password → click Verify\nRedirects back to target page with session cookies\n\nNo MFA or CAPTCHA is typically required. Playwright + playwright-stealth handles it cleanly.\n\nCredentials\n\nStore in a password vault or environment variables:\n\nUsername (church account email or membership ID)\nPassword\nLogin with Playwright\nimport asyncio\nfrom playwright.async_api import async_playwright\nfrom playwright_stealth import Stealth\n\nasync def login(target_url=\"https://lcr.churchofjesuschrist.org\", cookies_path=\"/tmp/church_cookies.json\"):\n    async with async_playwright() as p:\n        browser = await p.chromium.launch(\n            headless=True,\n            args=[\"--no-sandbox\", \"--disable-blink-features=AutomationControlled\", \"--disable-dev-shm-usage\"]\n        )\n        context = await browser.new_context(\n            viewport={\"width\": 1920, \"height\": 1080},\n            user_agent=\"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 ...\"\n        )\n        page = await context.new_page()\n        await Stealth().apply_stealth_async(page)\n        await page.goto(target_url)\n\n        # Enter username\n        await page.fill('input[name=\"identifier\"]', USERNAME)\n        await page.click('button[type=\"submit\"]')\n\n        # Enter password\n        await page.wait_for_selector('input[type=\"password\"]')\n        await page.fill('input[type=\"password\"]', PASSWORD)\n        await page.click('button[type=\"submit\"]')\n\n        # Wait for redirect\n        await page.wait_for_url(f\"{target_url}/**\", timeout=30000)\n\n        # Save session\n        await context.storage_state(path=cookies_path.replace('.json', '_state.json'))\n        await browser.close()\n\nReusing a Session\n\nAfter login, use saved storage state to skip re-authentication:\n\ncontext = await browser.new_context(\n    storage_state=\"/tmp/church_cookies_state.json\",\n    viewport={\"width\": 1920, \"height\": 1080},\n    user_agent=\"Mozilla/5.0 ...\"\n)\npage = await context.new_page()\nawait Stealth().apply_stealth_async(page)\n\nKey URLs\nService\tURL\nLCR (Leader & Clerk Resources)\thttps://lcr.churchofjesuschrist.org\nWard Directory\thttps://directory.churchofjesuschrist.org\nCalendar\thttps://www.churchofjesuschrist.org/calendar\nDonations\thttps://donations.churchofjesuschrist.org\nTemple Reservations\thttps://tos.churchofjesuschrist.org\nMy Home\thttps://www.churchofjesuschrist.org/my-home\nAccount Settings\thttps://id.churchofjesuschrist.org/account\nLCR Sections\n\nAfter login, LCR provides access to:\n\nMembership — member records, move-in/out, new members\nCallings — current callings, sustaining, setting apart\nMinistering & Welfare — assignments, needs\nFinance — tithing settlement, budget, donations\nMissionary — full-time and ward missionaries\nTemple — recommend status, temple activity\nReports — attendance, quarterly reports\nTips\nLogin sessions persist via cookies — no need to re-login every request\nHeadless Chrome with playwright-stealth avoids detection\nStorage state files contain auth tokens — treat as sensitive"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/nathan-deepmm/church-account",
    "publisherUrl": "https://clawhub.ai/nathan-deepmm/church-account",
    "owner": "nathan-deepmm",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/church-account",
    "downloadUrl": "https://openagent3.xyz/downloads/church-account",
    "agentUrl": "https://openagent3.xyz/skills/church-account/agent",
    "manifestUrl": "https://openagent3.xyz/skills/church-account/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/church-account/agent.md"
  }
}