dingtalk-minutes-access-request
Skill0 starsChanged 2 months agoMITView on GitHub
Use when the user wants to request access to restricted DingTalk AI 听记/minutes pages, recheck permission-pending AI 听记 links, or diagnose why a shanji.dingtalk.com transcript cannot be opened. Do not use this skill to read transcripts or summaries; use dws minutes for reading.
In this repository42 other files it gives its agents.
- ai-pr-redteamSkill
- ai-servicesSkill
- build-work-memorySkill
- ceo-calendar-inviteSkill
- ceo-document-reviewSkill
- ceo-email-classifierSkill
- ceo-feedback-iterationSkill
- ceo-feedback-processingSkill
- ceo-mail-reviewSkill
- ceo-meeting-workSkill
- ceo-message-triageSkill
- ceo-minutes-syncSkill
- ceo-personnel-communicationSkill
- ceo-wechatSkill
- ceo-work-trackingSkill
- codex-model-capacity-retrySkill
- daily-frontier-tech-discoverySkill
- dengbao-code-auditSkill
- dingtalk-browser-exportSkill
- dingtalk-knowledge-organizeSkill
- dingtalk-oa-approvalSkill
- dingtang-okr-reviewSkill
- fundflow-investor-meetingSkill
- fxiaoke-crm-cliSkill
- internal-app-standardsSkill
- ocrSkill
- pm-data-adaptation-assistantSkill
- project-delivery-document-collectionSkill
- qa-generated-test-caseSkill
- senior-technical-product-evaluationSkill
- spec-intakeSkill
- sso-oidc-onboardingSkill
- stardust-interviewSkill
- production-devops-sreSkill
- stardust-ttsSkill
- startask-io-contract-auditSkill
- task-managementSkill
- transcribeSkill
- veyra-timesheetSkill
- vibe-coding-rescueSkill
- vibe-codingSkill
- video-transcribeSkill
The file
We split this skill into the rules it gives an agent
8 rules. About 0 are common, 2 are distinctive, and 6 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 8
Use this skill only for DingTalk AI 听记 permission work:
- Very specific: line 14
Do not use this skill to extract, summarize, or save meeting transcript content.
- Very specific: line 21
If permission is granted after a recheck, stop and switch to dws minutes for the actual read.
- Distinctive: line 25
When a user reports that a minutes item may not have generated an AI summary, verify the two DWS surfaces separately before clicking the …
- Very specific: line 33
If the summary is empty and the page is accessible, open https://shanji.dingtalk.com/app/transcribes/<row_key>, switch to AI纪要 / AI …
- Very specific: line 34
If transcript paragraphs are missing, look for a visible 转文字 / Transcribe text control on the page.
- Very specific: line 53
Do not use dws minutes +apply-permission to request access.
- Very specific: line 97
Read the session over raw CDP from the live browser: Storage.getCookies on the browser-level WebSocket endpoint (/json/version).
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
DingTalk Minutes Access Request
Use this skill only for DingTalk AI 听记 permission work:
- request access for restricted
shanji.dingtalk.com听记 pages - recheck links that were previously permission-blocked
- diagnose whether a page is blocked by login, permission, stale storage state, or page layout
Do not use this skill to extract, summarize, or save meeting transcript content. Reading 听记 detail, transcript, AI summary, speakers, todos, keywords, or mind graph must go through dws minutes.
Boundary
dws minutes: read/list/get/transcript/summary/todo/speaker/keyword/mind-graph operations.dingtalk-minutes-access-request: browser-based permission request and blocked-page diagnosis only.
If permission is granted after a recheck, stop and switch to dws minutes for the actual read.
Missing Summary vs Empty Transcript
When a user reports that a minutes item may not have generated an AI summary, verify the two DWS surfaces separately before clicking the page:
dws minutes get summary --id <row_key> --format json
dws minutes get transcription --id <row_key> --format json- If
get summaryreturns non-emptyfullSummarybutget transcriptionreturns no paragraphs, this is not a missing-summary case. Do not click重新生成纪要; that regenerates the AI summary and does not create transcript paragraphs. Treat the item aszero_transcript, do not save a transcript, and report the DWS transcript metadata. - If the summary is empty and the page is accessible, open
https://shanji.dingtalk.com/app/transcribes/<row_key>, switch toAI纪要/AI Summary, click the visible重新生成纪要/Regenerate summaryor equivalent generate-summary primary action, wait for generation to finish, then re-read withdws minutes get summary. - If transcript paragraphs are missing, look for a visible
转文字/Transcribe textcontrol on the page. Only click it when the page clearly shows no transcript and offers transcription generation. After clicking, wait and recheck withdws minutes get transcription; save only after paragraphs are non-zero and pagination completes.
Static bundle evidence from the Shanji minutes app includes fullTextSummary.regenerateSummary (重新生成纪要) and detail.convertText (转文字), so keep summary regeneration and transcript generation as separate page actions.
What counts as a sent request
A request is sent only when the minute's page reads back Applied, waiting for
processing (已发送 / 等待审批 / Applied to / Reapply). Before the click
the page offers Send Application; after a real one it does not.
The provider spells one refusal two ways, both with server_key: "minutes":
no permission and B_PERMISSION_NoPermission. Match both — over one listing
of 253 minutes on 2026-09-18, 13 came back only in the second spelling.
Request permission from reading Please select means the page could not
resolve an owner to ask; the button stays disabled and no request can be sent
without choosing a person. That was 149 of 253 minutes in the same run, so
expect it to be the largest bucket, not an edge case.
Do not use dws minutes +apply-permission to request access. It answers
{"requested": true, "result": {"success": true}, "policyId": 4} for a request
its owner never receives: on 2026-09-18, 85 minutes were "requested" through it
and every one of their pages still offered Send Application afterwards, while
a single page click on an untouched minute flipped that same page to
Applied to <owner> for Viewable only permission / Applied, waiting for
processing. Treat its receipt as no evidence at all.
Reading the admin backend
shanji-admin.dingtalk.com/history is the only listing that shows minutes you
cannot read; dws minutes list (any scope) returns only accessible ones.
- The backend masks every title, including your own minutes. Masking is not
a permission signal. To tell whether a minute is readable, take its
row_keyand calldws minutes get info; a refusal comes back as a business error withserver_key: "minutes"andmessage: "no permission". - The full title and the owner to ask are only on the minute's own page, not in the backend table.
- A row whose size column is
-has been cleaned: approving it grants access to nothing. Exclude those before requesting. - The pagination control updates its own page number before the table
re-renders. Wait for the first
data-row-keyto change, not for the number, or you will re-read the previous page. A walk that was left on the last page reportsnextdisabled: return to page 1 before enumerating.
Prerequisites
- macOS with Google Chrome installed.
- Python 3.10+ and Playwright installed.
- A dedicated DingTalk browser profile/storage state may already exist from prior sync work.
Session handling on Chrome 153 / Playwright 1.59
connect_over_cdp fails against Chrome 153 with Browser context management is
not supported, so export_dingtalk_storage_state.py cannot run as written.
The login is also a session cookie: closing the window ends it, and
launch_persistent_context over the same profile cannot open it while the
visible browser holds the lock.
Working sequence:
launch_dingtalk_sync_browser.py(visible), and the user signs in. Only the user does this step.- Read the session over raw CDP from the live browser:
Storage.getCookieson the browser-level WebSocket endpoint (/json/version). - Launch a headless browser with
chromium.launch(channel="chrome", headless=True),add_cookiesthe result, and verify it lands on/historyrather thanlogin.dingtalk.com.
Everything after step 1 is headless. The carried session is still session-scoped, so it expires on the provider's own schedule and the user signs in again.
Current Scripts
Check local prerequisites:
python3 scripts/doctor.py --prettyLaunch a dedicated visible browser when login refresh is needed:
python3 scripts/launch_dingtalk_sync_browser.py --prettyExport storage state after login:
python3 scripts/export_dingtalk_storage_state.py --prettyCheck CDP connectivity:
python3 scripts/check_dingtalk_sync_browser.py --prettyRecheck blocked permission pages and optionally send access requests:
python3 scripts/recheck_dingtalk_permission_pages.py \
--storage-state ~/Documents/dingtalk-minutes-access-request/.storage_state.json \
--url "https://shanji.dingtalk.com/app/transcribes/<row_key>" \
--request-permissions \
--prettyDiagnose one blocked page:
python3 scripts/debug_permission_page.py \
~/Documents/dingtalk-minutes-access-request/.storage_state.json \
<row_key>Default Local Layout
- config:
config.json - example config:
config.example.json - storage state:
~/Documents/dingtalk-minutes-access-request/.storage_state.json - dedicated Chrome profile:
~/Documents/dingtalk-minutes-access-request/.chrome-profile
Reporting Back
Always return:
- page URL or row key
- whether the page is accessible now
- whether an access request was sent
- permission-pending or failure reason
- next read path, normally
dws minutes ..., when access is available
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

