mirror of
https://github.com/larksuite/cli.git
synced 2026-07-03 14:02:43 +08:00
99 lines
3.0 KiB
Go
99 lines
3.0 KiB
Go
// Copyright (c) 2026 Lark Technologies Pte. Ltd.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package doc
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
|
|
"github.com/spf13/cobra"
|
|
|
|
"github.com/larksuite/cli/shortcuts/common"
|
|
)
|
|
|
|
const docsServiceHelpDefault = `Document and content operations.`
|
|
|
|
const docsSkillReadCommand = "lark-cli skills read lark-doc"
|
|
const docsXMLSkillReadCommand = "lark-cli skills read lark-doc references/lark-doc-xml.md"
|
|
const docsMDSkillReadCommand = "lark-cli skills read lark-doc references/lark-doc-md.md"
|
|
const docsContentSkillHelp = "AI agents MUST read " +
|
|
docsXMLSkillReadCommand + " before writing any --content payload; " +
|
|
"when using --doc-format markdown, also read " + docsMDSkillReadCommand + ". " +
|
|
"Follow the latest rules there, and MUST NOT grep/open local SKILL.md files " +
|
|
"to discover this guidance"
|
|
|
|
func docsSkillReadCommandForShortcut(shortcut string) string {
|
|
switch strings.TrimPrefix(shortcut, "+") {
|
|
case "create":
|
|
return docsSkillReadCommand + " references/lark-doc-create.md"
|
|
case "fetch":
|
|
return docsSkillReadCommand + " references/lark-doc-fetch.md"
|
|
case "update":
|
|
return docsSkillReadCommand + " references/lark-doc-update.md"
|
|
default:
|
|
return docsSkillReadCommand
|
|
}
|
|
}
|
|
|
|
func docsHelpCommandForShortcut(shortcut string) string {
|
|
switch strings.TrimPrefix(shortcut, "+") {
|
|
case "create":
|
|
return "lark-cli docs +create --help"
|
|
case "fetch":
|
|
return "lark-cli docs +fetch --help"
|
|
case "update":
|
|
return "lark-cli docs +update --help"
|
|
default:
|
|
return "lark-cli docs --help"
|
|
}
|
|
}
|
|
|
|
// Shortcuts returns all docs shortcuts.
|
|
func Shortcuts() []common.Shortcut {
|
|
return []common.Shortcut{
|
|
DocsSearch,
|
|
DocsCreate,
|
|
DocsFetch,
|
|
DocsUpdate,
|
|
DocMediaInsert,
|
|
DocMediaUpload,
|
|
DocMediaPreview,
|
|
DocMediaDownload,
|
|
DocResourceDownload,
|
|
DocResourceUpdate,
|
|
DocResourceDelete,
|
|
}
|
|
}
|
|
|
|
// ConfigureServiceHelp adds docs-specific guidance to the parent `docs` command.
|
|
func ConfigureServiceHelp(cmd *cobra.Command) {
|
|
if cmd == nil {
|
|
return
|
|
}
|
|
cmd.Long = docsHelpLong(docsServiceHelpDefault, docsSkillReadCommand)
|
|
}
|
|
|
|
func installDocsShortcutHelp(command string) func(*cobra.Command) {
|
|
return func(cmd *cobra.Command) {
|
|
cmd.Long = docsHelpLong(cmd.Short, docsSkillReadCommandForShortcut(command))
|
|
}
|
|
}
|
|
|
|
func docsHelpLong(summary, skillReadCommand string) string {
|
|
return strings.TrimSpace(fmt.Sprintf(`%s
|
|
|
|
Start here (required for AI agents):
|
|
%s
|
|
|
|
AI agents MUST read the matching embedded skill before choosing flags
|
|
or running docs commands. Do not skip this step, and do not infer
|
|
workflows from --help alone. MUST NOT grep/open local SKILL.md files
|
|
to discover this guidance; use %s so content stays version-matched
|
|
with this CLI. Skills ship with the CLI and include docs workflows,
|
|
selector/block-id usage, XML/Markdown formats, and copy-paste examples.
|
|
|
|
skills read lark-doc Docs workflow guide
|
|
skills read lark-doc <path> Read a referenced docs skill file`, strings.TrimSpace(summary), skillReadCommand, skillReadCommand))
|
|
}
|