Introduction⌗

There are common extensions suitable for all repositories.

List⌗

Markdown⌗

  • Markdown All in One: All you need for Markdown (keyboard shortcuts, table of contents, auto preview and more).
    provides: formatter, intellisence, snippets

  • markdownlint: Markdown/CommonMark linting and style checking for Visual Studio Code
    provides: formatter, linter

Other⌗

  • EditoConfig for VS Code: This plugin attempts to override user/workspace settings with settings found in .editorconfig files.
    provides: intellisence

Spelling⌗

Version Control Systems⌗

  • Git Blame: See Git Blame information in the status bar for the currently selected line.
    provides something else

  • commitlint: A VS Code extension that integrates commitlint into VS Code's commit editor.
    provides: linter

Additions to extensions⌗

As some extensions don’t provide useful stuff we want to use for some or another reason we put it here.

Snippets for GitHub workflows⌗

Each snippet has a single char prefix as there is no ability to apply snippets to just GitHub workflow files in YAML Red Hat extension.


{
    "workflow not": {
        "description": "! operator",
        "prefix": "w:not",
        "body": [
            "!${1:expression}"
        ]
    },
    "workflow compare to": {
        "description": "comparison operator",
        "prefix": "w:compare-to",
        "body": [
            "${1:expression} ${2|<,>,<=,>=,==,!=|} ${3:expression}"
        ]
    },
    "workflow and": {
        "description": "&& operator",
        "prefix": "w:and",
        "body": [
            "${1:expression} && ${2:expression}"
        ]
    },
    "workflow or": {
        "description": "|| operator",
        "prefix": "w:or",
        "body": [
            "${1:expression} || ${2:expression}"
        ]
    },
    "workflow description": {
        "description": "step or job description",
        "prefix": "w:description",
        "body": [
            "${1|Build,Lint,Test|} with ${2|`,',\"|}${3:tool}$2"
        ]
    },
    "workflow command": {
        "description": "command",
        "prefix": "w:command",
        "body": [
            "echo \"::${1|debug,notice,error,endgroup,echo,add-mask,group,warning|} ${2:parameter=value...}::${3:value}\""
        ]
    },
    "workflow trigger": {
        "description": "trigger definition",
        "prefix": "w:trigger",
        "body": [
            "on:",
            "  ${1:event}:",
            "    branches:",
            "    - ${2:branch}",
            "",
            "  workflow_dispatch:"
        ]
    },
    "workflow step": {
        "description": "step definition",
        "prefix": "w:step",
        "body": [
            "- name: ${1:name}",
            "  run: |",
            "    $0"
        ]
    },
    "workflow job": {
        "description": "job definition",
        "prefix": "w:job",
        "body": [
            "${1:job}:",
            "  name: ${2:name}",
            "  runs-on: ${3:os}",
            "  steps:",
            "  - uses: actions/checkout@v${4:3}",
            "  - run: |",
            "      $0"
        ]
    },
    "workflow contains function": {
        "description": "'contains' function",
        "prefix": "w:contains",
        "body": [
            "contains(${1:input}, ${2:item})"
        ]
    },
    "workflow startsWith function": {
        "description": "'startsWith' function",
        "prefix": "w:startsWith",
        "body": [
            "startsWith(${1:input}, ${2:item})"
        ]
    },
    "workflow endsWith function": {
        "description": "'endsWith' function",
        "prefix": "w:endsWith",
        "body": [
            "endsWith(${1:input}, ${2:item})"
        ]
    },
    "workflow format function": {
        "description": "'format' function",
        "prefix": "w:format",
        "body": [
            "format(${1:format}, ${2:replacement...})"
        ]
    },
    "workflow join function": {
        "description": "'join' function",
        "prefix": "w:join",
        "body": [
            "join(${1:input}, ${2:separator})"
        ]
    },
    "workflow toJSON function": {
        "description": "'toJSON' function",
        "prefix": "w:toJSON",
        "body": [
            "toJSON(${1:input})"
        ]
    },
    "workflow fromJSON function": {
        "description": "'fromJSON' function",
        "prefix": "w:fromJSON",
        "body": [
            "fromJSON(${1:input})"
        ]
    },
    "workflow hashFiles function": {
        "description": "'hashFiles' function",
        "prefix": "w:hashFiles",
        "body": [
            "hashFiles(${1:path})"
        ]
    },
    "workflow success function": {
        "description": "'success' function",
        "prefix": "w:success",
        "body": [
            "success()"
        ]
    },
    "workflow always function": {
        "description": "'always' function",
        "prefix": "w:always",
        "body": [
            "always()"
        ]
    },
    "workflow cancelled function": {
        "description": "'cancelled' function",
        "prefix": "w:cancelled",
        "body": [
            "cancelled()"
        ]
    },
    "workflow failure function": {
        "description": "'failure' function",
        "prefix": "w:failure",
        "body": [
            "failure()"
        ]
    },
    "workflow github context": {
        "description": "'github' context",
        "prefix": "w:github",
        "body": [
            "${{ github.${1|action,action_path,action_ref,action_repository,action_status,actor,actor_id,api_url,base_ref,env,event,event_name,event_path,graphql_url,head_ref,job,job_workflow_sha,path,ref,ref_name,ref_protected,ref_type,repository,repository_id,repository_owner,repository_owner_id,repositoryUrl,retention_days,run_id,run_number,run_attempt,secret_source,server_url,sha,token,triggering_actor,workflow,workflow_ref,workflow_sha,workspace|} }}"
        ]
    },
    "workflow env context": {
        "description": "'env' context",
        "prefix": "w:env",
        "body": [
            "${{ env.${1:variable} }}"
        ]
    },
    "workflow vars context": {
        "description": "'vars' context",
        "prefix": "w:vars",
        "body": [
            "${{ vars.${1:variable} }}"
        ]
    },
    "workflow job context": {
        "description": "'job' context",
        "prefix": "w:job",
        "body": [
            "${{ job.${1|container,container.id,container.network,services,services.SERVICE_ID.id,services.SERVICE_ID.network,services.SERVICE_ID.ports,status|} }}"
        ]
    },
    "workflow jobs context": {
        "description": "'jobs' context",
        "prefix": "w:jobs",
        "body": [
            "${{ jobs.${1|JOB_ID.result,JOB_ID.outputs,JOB_ID.outputs.OUTPUT_NAME|} }}"
        ]
    },
    "workflow steps context": {
        "description": "'steps' context",
        "prefix": "w:steps",
        "body": [
            "${{ jobs.${1|STEP_ID.outputs,STEP_ID.conclusion,STEP_ID.outcome,STEP_ID.outputs.OUTPUT_NAME|} }}"
        ]
    },
    "workflow runner context": {
        "description": "'runner' context",
        "prefix": "w:runner",
        "body": [
            "${{ jobs.${1|name,os,arch,temp,tool_cache,debug|} }}"
        ]
    },
    "workflow secrets context": {
        "description": "'secrets' context",
        "prefix": "w:secrets",
        "body": [
            "${{ secrets.${1|GITHUB_TOKEN,SECRET_NAME|} }}"
        ]
    },
    "workflow strategy context": {
        "description": "'strategy' context",
        "prefix": "w:strategy",
        "body": [
            "${{ strategy.${1|fail-fast,job-index,job-total,max-parallel|} }}"
        ]
    },
    "workflow matrix context": {
        "description": "'matrix' context",
        "prefix": "w:matrix",
        "body": [
            "${{ matrix.${1|property_name|} }}"
        ]
    },
    "workflow needs context": {
        "description": "'needs' context",
        "prefix": "w:needs",
        "body": [
            "${{ matrix.${1|JOB_ID,JOB_ID.outputs,JOB_ID.outputs.OUTPUT_NAME,JOB_ID.result|} }}"
        ]
    },
    "workflow inputs context": {
        "description": "'inputs' context",
        "prefix": "w:inputs",
        "body": [
            "${{ inputs.${1|NAME|} }}"
        ]
    },
    "bash if": {
        "description": "if operator",
        "prefix": "b:if",
        "body": [
            "if ${1:condition}; then",
            "\t$0",
            "fi"
        ]
    },
    "bash if else": {
        "description": "if else operator",
        "prefix": "b:if-else",
        "body": [
            "if ${1:condition}; then",
            "\t${2:echo}",
            "else",
            "\t$0",
            "fi"
        ]
    },
    "bash while": {
        "description": "while operator",
        "prefix": "b:while",
        "body": [
            "while ${1:condition}; do",
            "\t$0",
            "done"
        ]
    },
    "bash until": {
        "description": "until operator",
        "prefix": "b:until",
        "body": [
            "until ${1:condition}; do",
            "\t$0",
            "done"
        ]
    },
    "bash for": {
        "description": "for operator",
        "prefix": "b:for",
        "body": [
            "for ${1:variable} in ${2:list}; do",
            "\t$0",
            "done"
        ]
    },
    "cmd if": {
        "description": "if operator",
        "prefix": "c:if",
        "body": [
            "if ${1:condition} (",
            "\t$0",
            ")"
        ]
    },
    "cmd if else": {
        "description": "if else operator",
        "prefix": "c:if-else",
        "body": [
            "if ${1:condition} (",
            "\t${2:echo}",
            ") else (",
            "\t$0",
            ")"
        ]
    },
    "cmd for": {
        "description": "for operator",
        "prefix": "c:for",
        "body": [
            "for %%${1:variable} in (${2:list}) do (",
            "\t$0",
            ")"
        ]
    },
    "pwsh if": {
        "description": "if operator",
        "prefix": "p:if",
        "body": [
            "if (${1:condition})",
            "{",
            "\t$0",
            "}"
        ]
    },
    "pwsh if else": {
        "description": "if else operator",
        "prefix": "p:if-else",
        "body": [
            "if (${1:condition})",
            "{",
            "\t${2:echo}",
            "}",
            "else",
            "{",
            "\t$0",
            "}"
        ]
    },
    "pwsh while": {
        "description": "while operator",
        "prefix": "p:while",
        "body": [
            "while (${1:condition})",
            "{",
            "\t$0",
            "}"
        ]
    },
    "pwsh do": {
        "description": "do operator",
        "prefix": "p:do",
        "body": [
            "do",
            "{",
            "\t$0",
            "}",
            "while (${1:condition})"
        ]
    },
    "pwsh for": {
        "description": "for operator",
        "prefix": "p:for",
        "body": [
            "for (${1:variable}=${2:value}; ${3:condition}; ${4:command})",
            "{",
            "\t$0",
            "}"
        ]
    },
    "pwsh foreach": {
        "description": "foreach operator",
        "prefix": "p:foreach",
        "body": [
            "for (${1:item} in ${2:list})",
            "{",
            "\t$0",
            "}"
        ]
    },
    "env change directory": {
        "description": "directory change",
        "prefix": "e:directory-change",
        "body": [
            "sed ${1|--chdir,-C|} ${2:command}"
        ]
    },
    "env ignore environment": {
        "description": "environment ignore",
        "prefix": "e:environment-ignore",
        "body": [
            "sed ${1|--ignore-environment,-i|} ${2:command}"
        ]
    },
    "sed print": {
        "description": "line print",
        "prefix": "s:print",
        "body": [
            "sed '' ${1:path/to/file}"
        ]
    },
    "sed filter by line pattern": {
        "description": "line pattern filter",
        "prefix": "s:filter-by-line-pattern",
        "body": [
            "sed ${1|--regexp-extended,-E|} ${2|--quiet,-n|} '/${3:pattern}/p' ${4:path/to/file}"
        ]
    },
    "sed filter by line number": {
        "description": "line number filter",
        "prefix": "s:filter-by-line-number",
        "body": [
            "sed ${1|--regexp-extended,-E|} ${2|--quiet,-n|} '${3:number}p' ${4:path/to/file}"
        ]
    },
    "sed filter by line numbers": {
        "description": "line number filter",
        "prefix": "s:filter-by-line-numbers",
        "body": [
            "sed ${1|--regexp-extended,-E|} ${2|--quiet,-n|} '${3:from},${4:to}p' ${5:path/to/file}"
        ]
    },
    "sed replace single": {
        "description": "single replacement",
        "prefix": "s:replace-first",
        "body": [
            "sed ${1|--regexp-extended,-E|} 's/${2:pattern}/${3:replacement}/' ${4:path/to/file}"
        ]
    },
    "sed replace globally": {
        "description": "global replacement",
        "prefix": "s:replace-all",
        "body": [
            "sed ${1|--regexp-extended,-E|} 's/${2:pattern}/${3:replacement}/g' ${4:path/to/file}"
        ]
    },
    "sed transliterate": {
        "description": "transliteration",
        "prefix": "s:transliterate",
        "body": [
            "sed ${1|--regexp-extended,-E|} 'y/${2:source-characters}/${3:replacement-characters}/g' ${4:path/to/file}"
        ]
    },
    "awk print": {
        "description": "line print",
        "prefix": "a:print",
        "body": [
            "awk '{ print $0 }' ${1:path/to/file}"
        ]
    },
    "awk filter by line pattern": {
        "description": "line pattern filter",
        "prefix": "a:filter-by-line-pattern",
        "body": [
            "awk '/${1:pattern}/' ${2:path/to/file}"
        ]
    },
    "awk filter by line number": {
        "description": "line number filter",
        "prefix": "a:filter-by-line-number",
        "body": [
            "awk 'NR == ${1:number}' ${2:path/to/file}"
        ]
    },
    "awk filter by line numbers": {
        "description": "line number filter",
        "prefix": "a:filter-by-line-numbers",
        "body": [
            "awk 'NR >= ${1:from} && NR <= ${2:to}' ${3:path/to/file}"
        ]
    },
    "awk replace single": {
        "description": "single replacement",
        "prefix": "a:replace-first",
        "body": [
            "awk '{ sub(\"${1:pattern}\", \"${2:replacement}\") }' ${3:path/to/file}"
        ]
    },
    "awk replace globally": {
        "description": "global replacement",
        "prefix": "a:replace-all",
        "body": [
            "awk '{ gsub(\"${1:pattern}\", \"${2:replacement}\") }' ${3:path/to/file}"
        ]
    }
}