diff --git a/docs/reference/short_names.html b/docs/reference/short_names.html
index d998a80..78f877d 100644
--- a/docs/reference/short_names.html
+++ b/docs/reference/short_names.html
@@ -19,17 +19,7 @@
diff --git a/docs/search.json b/docs/search.json
index 156587e..47726c2 100644
--- a/docs/search.json
+++ b/docs/search.json
@@ -1 +1 @@
-[{"path":"https://openscapes.github.io/kyber/articles/configuration.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"Configuring Google Sheets and GitHub for Kyber","text":"main purpose Kyber automate common tasks need done start Openscapes Champions Cohort. level automation requires authorize computer Google Sheets GitHub.","code":""},{"path":"https://openscapes.github.io/kyber/articles/configuration.html","id":"configuring-google-sheets","dir":"Articles","previous_headings":"","what":"Configuring Google Sheets","title":"Configuring Google Sheets and GitHub for Kyber","text":"Kyber interacts Google Sheets via googlesheets4 package. package makes easy authorize computer Kyber can access Google Sheets programmatically. Run following code configure googlesheets4: function redirect web browser can log Google account. authorized googlesheets4, can confirm configured correctly running following: detailed information, see gs4_auth() documentation googlesheets4 authorization troubleshooting documentation.","code":"library(googlesheets4) gs4_auth() gs4_user() #> Logged in to googlesheets4 as your-name@email.com."},{"path":"https://openscapes.github.io/kyber/articles/configuration.html","id":"troubelshooting-google-sheets","dir":"Articles","previous_headings":"Configuring Google Sheets","what":"Troubelshooting Google Sheets","title":"Configuring Google Sheets and GitHub for Kyber","text":"authorized computer use googlesheets4 may see following error: success troubleshooting error following method. First, try reading Google Sheet R: see following prompt: Enter 0 press Enter key. computer’s browser launch load Google’s authorization page. Reauthorize account via web browser see following message R console:","code":"The googlesheets4 package is requesting access to your Google account. Select a pre-authorised account or enter '0' to obtain a new token. Press Esc/Ctrl + C to cancel. 1: username@email.com Selection: 1 Auto-refreshing stale OAuth token. Error in `gargle_abort_request_failed()`: ! Client error: (403) PERMISSION_DENIED ... library(googlesheets4) cohort_registry_url <- \"https://docs.google.com/spreadsheets/sheet-url...\" read_sheet(cohort_registry_url) Selection: Waiting for authentication in browser... Press Esc/Ctrl + C to abort Authentication complete."},{"path":"https://openscapes.github.io/kyber/articles/configuration.html","id":"configuring-git-and-github","dir":"Articles","previous_headings":"","what":"Configuring Git and GitHub","title":"Configuring Google Sheets and GitHub for Kyber","text":"One main purposes Kyber automate processes people normally “hand.” authorizing Kyber GitHub account, allowing Kyber act “” GitHub. 🚨 word caution: take care using Kyber functions interact GitHub. Kyber designed delete things GitHub Kyber, however determined use Kyber make big mess. going write code functions use Kyber, try avoid using Kyber within code designed iterate execute multiple commands. includes loops, mapping functions like sapply() purrr::map().","code":""},{"path":"https://openscapes.github.io/kyber/articles/configuration.html","id":"configuring-git","dir":"Articles","previous_headings":"Configuring Git and GitHub","what":"Configuring Git","title":"Configuring Google Sheets and GitHub for Kyber","text":"Make sure Git installed computer. need install Git can find instructions specific operating system online Git documentation GitHub guide.","code":""},{"path":"https://openscapes.github.io/kyber/articles/configuration.html","id":"configuring-github","dir":"Articles","previous_headings":"Configuring Git and GitHub","what":"Configuring GitHub","title":"Configuring Google Sheets and GitHub for Kyber","text":"get started configuring GitHub, first make sure GitHub account logged . Take note GitHub username choose email address use sign GitHub. installing Git, make sure install Gert package, Kyber uses interact Git. freshly installed Git, use Gert set GitHub username email address locally following code: Confirm configuration set correctly running: Now configured GitHub username email address Git, need use GitHub generate token Kyber use connect GitHub account. Keeping token private extremely important, since anyone token can act GitHub. ’s need save token however, just need copy paste R console . Run code , open web browser page GitHub appropriate settings token already selected. execute code , scroll bottom page click green “Generate token” button. token appear string 40 random alphanumeric characters start ghp_. Copy string GitHub running code . prompted enter token R console: Paste token R console press Enter, see: can check make sure credentials set running: Everything now configured start using Kyber.","code":"library(gert) git_config_global_set(\"user.name\", \"[your GitHub username]\") git_config_global_set(\"user.email\", \"[the email you used to sign up for GitHub]\") git_config_global() library(usethis) create_github_token( scopes = c(\"repo\", \"user\", \"gist\", \"workflow\", \"admin:org\"), description = paste0(\"kyber-\", Sys.Date()) ) #> • Call `gitcreds::gitcreds_set()` to register this token in the local Git credential store #> It is also a great idea to store this token in any password-management software that you use #> • Open URL 'https://github.com/settings/tokens/new?scopes=repo,user,gist,workflow,admin:org&description=kyber-2023-03-26' library(gitcreds) gitcreds_set() ? Enter password or token: -> Adding new credentials... -> Removing credentials from cache... -> Done. gitcreds_get()
protocol: https host : github.com username: PersonalAccessToken password: <-- hidden -->"},{"path":"https://openscapes.github.io/kyber/articles/github-repo.html","id":"configure-github","dir":"Articles","previous_headings":"","what":"Configure GitHub","title":"Creating a Cohort-Specific GitHub Repository with Kyber","text":"Make sure computer configured according instructions vignette(\"configuration\"). Run following code see GitHub credentials set : credentials detected get result like:","code":"library(gitcreds) gitcreds_get() protocol: https host : github.com username: PersonalAccessToken password: <-- hidden -->"},{"path":"https://openscapes.github.io/kyber/articles/github-repo.html","id":"creating-the-repository","dir":"Articles","previous_headings":"","what":"Creating the Repository","title":"Creating a Cohort-Specific GitHub Repository with Kyber","text":"Champions Cohort GitHub repository. name repository match corresponding cohort_name Cohort Registry. init_repo()","code":""},{"path":[]},{"path":"https://openscapes.github.io/kyber/authors.html","id":null,"dir":"","previous_headings":"","what":"Authors","title":"Authors and Citation","text":"Sean Kross. Author, maintainer. Julia Lowndes. Author.","code":""},{"path":"https://openscapes.github.io/kyber/authors.html","id":"citation","dir":"","previous_headings":"","what":"Citation","title":"Authors and Citation","text":"Kross S, Lowndes J (2023). kyber: Set Learning Cohorts GitHub. R package version 0.1.0, https://openscapes.github.io/kyber/.","code":"@Manual{, title = {kyber: Set Up Learning Cohorts on GitHub}, author = {Sean Kross and Julia Lowndes}, year = {2023}, note = {R package version 0.1.0}, url = {https://openscapes.github.io/kyber/}, }"},{"path":[]},{"path":"https://openscapes.github.io/kyber/index.html","id":"installation","dir":"","previous_headings":"","what":"Installation","title":"Set Up Learning Cohorts on GitHub","text":"can install Kyber using remotes package:","code":"remotes::install_github(\"openscapes/kyber@main\")"},{"path":"https://openscapes.github.io/kyber/index.html","id":"overview","dir":"","previous_headings":"","what":"Overview","title":"Set Up Learning Cohorts on GitHub","text":"Kyber contains tools setting learning cohorts GitHub, purpose-built Openscapes Champions Program. init_repo() initializes local git repository new GitHub repository README.Rmd, code conduct, gitignore. create_github_clinic() creates files need teaching GitHub clinic. create_team() creates new team GitHub. add_team_members() adds members team GitHub based GitHub usernames. add_team_to_repo() adds team GitHub repository. call_agenda() creates agenda documents individual Cohort Call.","code":""},{"path":[]},{"path":"https://openscapes.github.io/kyber/index.html","id":"configuration","dir":"","previous_headings":"Quick Cohort Setup","what":"Configuration","title":"Set Up Learning Cohorts on GitHub","text":"Using Kyber requires configuration R packages since Kyber functions automate processes GitHub normally hand. First, make sure googlesheets4 installed authorized computer read Google Sheets. Run following test configuration settings:","code":"library(googlesheets4) cohort_registry_url <- \"https://docs.google.com/spreadsheets/d/1Ys9KiTXXmZ_laBoCV2QWEm7AcnGSVQaXvm2xpi4XTSc/\" read_sheet(cohort_registry_url, sheet = \"test-sheet\") library(usethis) library(gitcreds) create_github_token( scopes = c(\"repo\", \"user\", \"gist\", \"workflow\", \"admin:org\") ) gitcreds_set()"},{"path":"https://openscapes.github.io/kyber/index.html","id":"example-workflow","dir":"","previous_headings":"","what":"Example Workflow","title":"Set Up Learning Cohorts on GitHub","text":"workflow often happens 4 separate stages: create repo readme (pre-cohort) create github-clinic files (days GitHub Clinic Call 2) create github team add usernames (day Clinic, usernames) create agenda documents Cohort Call creating GitHub Team adding usernames, Kyber requires set GitHub Personal Access Token scopes repo admin:org. See GitHub PAT documentation information generate PAT. can create PAT usethis::create_github_token() defaults, plus admin:org. Please make sure share PAT commit Git repository, since anyone PAT can act GitHub.","code":""},{"path":"https://openscapes.github.io/kyber/index.html","id":"create-github-repo","dir":"","previous_headings":"Example Workflow","what":"Create GitHub repo","title":"Set Up Learning Cohorts on GitHub","text":"","code":"library(kyber) library(rmarkdown) library(tibble) library(fs) repo_name <- \"2021-ilm-rotj\" # This will open a README.Rmd for you to edit repo_path <- create_repo(repo_name) # Then render the README.Rmd to README.md render(path(repo_path, \"README.Rmd\")) # We still need to work out the next part of the workflow and the extent to # which it should be automated, but I imagine something like: # # 1. Move README.Rmd out of this repository to another repository that perhaps # only contains README.Rmds. # 2. Git add, commit, and push in the repo that only contains README.Rmds. # 3. Git add, commit, and push in this repository."},{"path":"https://openscapes.github.io/kyber/index.html","id":"github-clinic---generate-markdown-files-for-each-participant","dir":"","previous_headings":"Example Workflow","what":"GitHub Clinic - Generate Markdown Files for Each Participant","title":"Set Up Learning Cohorts on GitHub","text":"Clone Cohort Repo RStudio, run following code. Detailed instructions looks like: Open RStudio, create new script (temporary, ’ll deleted ’s nicer place work) Copy following script, delete examples “Erin, Julie”. ’ll keep _demo.md, ’ll demo live. Go ParticipantsList, copy 2 first last columns Back RStudio, put cursor inside “tribble” parentheses, , Addin menu top RStudio, select “Paste Tribble”! , double-check column headers - likely first last written kyber::short_names call. easiest thing update column names kyber::short_names code running (example: kyber::short_names(cohort$First.Name, cohort$Last.Name) ’ll now .md files participant cohort! duplicate names _LastInitial. Check clicking github-clinic folder opening file. Now, commit push Markdown files github-clinic folder plus `horst-champions-trailhead.png top-level folder GitHub.com. Don’t push .gitignore .rproj since ’re relevant Clinic. (can Command-select files unclick 2 don’t want).","code":"library(stringr) library(datapasta) # install.packages(\"datapasta\") library(kyber) ## remotes::install_github(\"openscapes/kyber\") library(here) library(fs) ## use `datapasta` addin to vector_tribble these names formatted from the spreadsheet! cohort <- c(tibble::tribble( ~first, ~last, \"_demo\", \"\", \"Erin\", \"Robinson\", \"Julie\", \"Lowndes\" ) ) ## create .md files for each Champion kyber::short_names(cohort$first, cohort$last) |> create_github_clinic(here()) ## copy trailhead image into parent folder trailhead_png <- system.file(\"kyber-templates\", \"horst-champions-trailhead.png\", package = \"kyber\") fs::file_copy(trailhead_png, here())"},{"path":"https://openscapes.github.io/kyber/index.html","id":"create-github-team-add-usernames","dir":"","previous_headings":"Example Workflow","what":"Create GitHub team, add usernames","title":"Set Up Learning Cohorts on GitHub","text":"Open RStudio, create new script (temporary, ’ll deleted ’s nicer place work) Paste following review code. may already GitHub PAT set; information top README . Run code first -example usernames members variable check - Check example usernames added Cohort GitHub: go github.com/openscapes/cohort-name > Settings > Collaborators Teams team created username appears repo, woohoo! Open ParticipantsList copy GitHub username column, including header. RStudio, put cursor members <- use datapasta Addin > Paste Tribble paste usernames members variable, deleting previous example user. pasting R script, rename header “username” (spaces asterices) Run following code check everyone added! Finally, ParticipantList, highlight usernames ’ve added green. helps us know else add live clinic session. Yay! Now highlight usernames green ParticpantList bookkeeping!","code":"## First make sure you have a GitHub PAT set. If you need one, here's what you'd do: # usethis::create_github_token() ## use their defaults plus `admin:org` # Sys.setenv(GITHUB_PAT = \"ghp_0id4zkO4GqSuEsC6Zs22wf34Y0u3270\") library(kyber) library(rmarkdown) library(tibble) library(fs) library(datapasta) ## create naming for GitHub - do this once! repo_name <- \"2022-nasa-champions\" team_name <- paste0(repo_name, \"-cohort\") create_team(team_name, maintainers = \"jules32\", org = \"openscapes\") ## create member variable - do this twice (first as test!) ## this is where you'll use datapasta and run everything below members <- tibble::tribble( ~username, \"eeholmes\" ) add_team_members(team_name, members = members$username, org = \"openscapes\") add_repo_to_team(repo_name, team_name, org = \"openscapes\")"},{"path":"https://openscapes.github.io/kyber/index.html","id":"agendas","dir":"","previous_headings":"Example Workflow","what":"Agendas","title":"Set Up Learning Cohorts on GitHub","text":", move Google Doc fine-tune formatting, follow notes (July 14, 2022): RStudio, Knit (PreviewHTML) resulting agenda.md copy-paste result Google Doc (example: 03_CallAgenda [ 2022-noaa-afsc ]. might need expand knitted preview browser get copy/paste correctly Google Docs Move Google Doc Openscapes Workspace folder Openscapes_CohortCalls [ year-cohort-name ]. Select (cmd-) change font Open Sans Make p1 opening text 9 point font (text horizontal line & Call title) Make Header 1 font 18, bold; update heading 1 match (see screenshot ; Stef notes “update heading match” working docs) Make Header 2 font 14, bold; update heading 2 match “add space” “remove space paragraph” throughout make spacing little cozy (yes seems odd undo, works) “add space” “remove space paragraph” throughout make spacing little cozy Review doc fix font weirdness Add page numbers “update heading 1 match”: (Stef notes working docs) Google Doc, update text style (headings, normal text, font type, size etc), highlight section style want, click styles dropdown shown screenshot, select e.g. “Update Heading 1 match”. Double check doc ’ve noticed missed agenda. Screen Shot 2022-07-14 5 50 28 PM","code":"kyber::call_agenda( registry_url = \"https://docs.google.com/spreadsheets/d/1Ys9KiTXXmZ_laBoCV2QWEm7AcnGSVQaXvm2xpi4XTSc/edit#gid=942365997\", cohort_id = \"2022-nasa-champions\", call_number = 3)"},{"path":"https://openscapes.github.io/kyber/reference/add_code_of_conduct.html","id":null,"dir":"Reference","previous_headings":"","what":"Add a Code of Conduct to a directory. — add_code_of_conduct","title":"Add a Code of Conduct to a directory. — add_code_of_conduct","text":"Add Code Conduct directory.","code":""},{"path":"https://openscapes.github.io/kyber/reference/add_code_of_conduct.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Add a Code of Conduct to a directory. — add_code_of_conduct","text":"","code":"add_code_of_conduct(path = getwd())"},{"path":"https://openscapes.github.io/kyber/reference/add_code_of_conduct.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Add a Code of Conduct to a directory. — add_code_of_conduct","text":"path path directory code conduct file created.","code":""},{"path":"https://openscapes.github.io/kyber/reference/add_gitignore.html","id":null,"dir":"Reference","previous_headings":"","what":"Add .gitignore to a directory. — add_gitignore","title":"Add .gitignore to a directory. — add_gitignore","text":"Add .gitignore directory.","code":""},{"path":"https://openscapes.github.io/kyber/reference/add_gitignore.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Add .gitignore to a directory. — add_gitignore","text":"","code":"add_gitignore(path = getwd())"},{"path":"https://openscapes.github.io/kyber/reference/add_gitignore.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Add .gitignore to a directory. — add_gitignore","text":"path path directory git ignore file created.","code":""},{"path":"https://openscapes.github.io/kyber/reference/add_repo_to_team.html","id":null,"dir":"Reference","previous_headings":"","what":"Add a GitHub Repository to a Team — add_repo_to_team","title":"Add a GitHub Repository to a Team — add_repo_to_team","text":"Add GitHub Repository Team","code":""},{"path":"https://openscapes.github.io/kyber/reference/add_repo_to_team.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Add a GitHub Repository to a Team — add_repo_to_team","text":"","code":"add_repo_to_team(repository, team, org = \"openscapes\")"},{"path":"https://openscapes.github.io/kyber/reference/add_repo_to_team.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Add a GitHub Repository to a Team — add_repo_to_team","text":"repository name GitHub repository. team name team. org GitHub organization owns team repository.","code":""},{"path":"https://openscapes.github.io/kyber/reference/add_repo_to_team.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Add a GitHub Repository to a Team — add_repo_to_team","text":"","code":"if (FALSE) { kyber::add_repo_to_team(\"2021-ilm-rotj\", \"2021-ilm-rotj-team\") }"},{"path":"https://openscapes.github.io/kyber/reference/add_team_members.html","id":null,"dir":"Reference","previous_headings":"","what":"Add GitHub Users to a Team — add_team_members","title":"Add GitHub Users to a Team — add_team_members","text":"Add GitHub Users Team","code":""},{"path":"https://openscapes.github.io/kyber/reference/add_team_members.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Add GitHub Users to a Team — add_team_members","text":"","code":"add_team_members(team, members, org = \"openscapes\")"},{"path":"https://openscapes.github.io/kyber/reference/add_team_members.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Add GitHub Users to a Team — add_team_members","text":"team name team. members vector GitHub usernames. org GitHub organization owns team repository.","code":""},{"path":"https://openscapes.github.io/kyber/reference/add_team_members.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Add GitHub Users to a Team — add_team_members","text":"","code":"if (FALSE) { kyber::add_team_members(\"2021-ilm-rotj-team\", members = c(\"erinmr\", \"seankross\")) }"},{"path":"https://openscapes.github.io/kyber/reference/add_team_to_repo.html","id":null,"dir":"Reference","previous_headings":"","what":"Add a GitHub Team to a Repository — add_team_to_repo","title":"Add a GitHub Team to a Repository — add_team_to_repo","text":"Add GitHub Team Repository","code":""},{"path":"https://openscapes.github.io/kyber/reference/add_team_to_repo.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Add a GitHub Team to a Repository — add_team_to_repo","text":"","code":"add_team_to_repo(repository, team, org = \"openscapes\")"},{"path":"https://openscapes.github.io/kyber/reference/add_team_to_repo.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Add a GitHub Team to a Repository — add_team_to_repo","text":"repository name GitHub repository. team name team. org GitHub organization owns team repository.","code":""},{"path":"https://openscapes.github.io/kyber/reference/add_team_to_repo.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Add a GitHub Team to a Repository — add_team_to_repo","text":"","code":"if (FALSE) { kyber::add_team_to_repo(\"2021-ilm-rotj\", \"2021-ilm-rotj-team\") }"},{"path":"https://openscapes.github.io/kyber/reference/call_agenda.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a Call Agenda — call_agenda","title":"Create a Call Agenda — call_agenda","text":"Create Call Agenda","code":""},{"path":"https://openscapes.github.io/kyber/reference/call_agenda.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a Call Agenda — call_agenda","text":"","code":"call_agenda( registry_url, cohort_id, call_number, cohort_sheet = \"cohort_metadata\", call_sheet = \"call_metadata\", website = paste0(\"https://openscapes.github.io/\", cohort_id), output_format = md_agenda(), output_file = \"agenda.md\" )"},{"path":"https://openscapes.github.io/kyber/reference/call_agenda.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a Call Agenda — call_agenda","text":"registry_url URL cohort registry. cohort_id ID cohort. call_number call number agenda. cohort_sheet sheet registry cohort information. call_sheet sheet registry information individual calls. website website cohort. output_format output format agenda. output_file name output file file extension.","code":""},{"path":"https://openscapes.github.io/kyber/reference/create_github_clinic.html","id":null,"dir":"Reference","previous_headings":"","what":"Create GitHub Clinic Files — create_github_clinic","title":"Create GitHub Clinic Files — create_github_clinic","text":"Create GitHub Clinic Files","code":""},{"path":"https://openscapes.github.io/kyber/reference/create_github_clinic.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create GitHub Clinic Files — create_github_clinic","text":"","code":"create_github_clinic(names, path = getwd())"},{"path":"https://openscapes.github.io/kyber/reference/create_github_clinic.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create GitHub Clinic Files — create_github_clinic","text":"names vector names markdown files created. .md extension added automatically. path Path directory github-clinic created.","code":""},{"path":"https://openscapes.github.io/kyber/reference/create_github_clinic.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create GitHub Clinic Files — create_github_clinic","text":"","code":"if (FALSE) { create_github_clinic(names = c(\"julia\", \"erin\")) file.exists(\"github-clinic\") #> TRUE list.files(\"github-clinic\") #> \"erin.md\" \"julia.md\" }"},{"path":"https://openscapes.github.io/kyber/reference/create_readme.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a README.Rmd from a Kyber Template — create_readme","title":"Create a README.Rmd from a Kyber Template — create_readme","text":"Create README.Rmd Kyber Template","code":""},{"path":"https://openscapes.github.io/kyber/reference/create_readme.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a README.Rmd from a Kyber Template — create_readme","text":"","code":"create_readme( file = \"README.Rmd\", template = \"openscapes-cohort-readme\", edit = TRUE )"},{"path":"https://openscapes.github.io/kyber/reference/create_readme.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a README.Rmd from a Kyber Template — create_readme","text":"file File name draft template Template use basis draft. either full path template directory name template directory within rmarkdown/templates directory package. edit TRUE edit template immediately","code":""},{"path":"https://openscapes.github.io/kyber/reference/create_readme.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Create a README.Rmd from a Kyber Template — create_readme","text":"Valid values template argument include \"openscapes-cohort-readme\".","code":""},{"path":"https://openscapes.github.io/kyber/reference/create_readme.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create a README.Rmd from a Kyber Template — create_readme","text":"","code":"if (FALSE) { kyber::create_readme() }"},{"path":"https://openscapes.github.io/kyber/reference/create_repo.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a GitHub repository with a README.Rmd — create_repo","title":"Create a GitHub repository with a README.Rmd — create_repo","text":"Create GitHub repository README.Rmd","code":""},{"path":"https://openscapes.github.io/kyber/reference/create_repo.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a GitHub repository with a README.Rmd — create_repo","text":"","code":"create_repo( name, org = \"openscapes\", path = getwd(), template = \"openscapes-cohort-readme\", edit = TRUE )"},{"path":"https://openscapes.github.io/kyber/reference/create_repo.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a GitHub repository with a README.Rmd — create_repo","text":"name name repository. org GitHub organization repository. path path directory repository created. template Template use basis draft. either full path template directory name template directory within rmarkdown/templates directory package. edit TRUE edit template immediately","code":""},{"path":"https://openscapes.github.io/kyber/reference/create_repo.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Create a GitHub repository with a README.Rmd — create_repo","text":"Valid values template argument include \"openscapes-cohort-readme\", FALSE want create repository README.md.","code":""},{"path":"https://openscapes.github.io/kyber/reference/create_repo.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create a GitHub repository with a README.Rmd — create_repo","text":"","code":"if (FALSE) { kyber::create_repo(\"2021-ilm-rotj\") }"},{"path":"https://openscapes.github.io/kyber/reference/create_team.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a Team on GitHub for an Organization — create_team","title":"Create a Team on GitHub for an Organization — create_team","text":"Create Team GitHub Organization","code":""},{"path":"https://openscapes.github.io/kyber/reference/create_team.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a Team on GitHub for an Organization — create_team","text":"","code":"create_team(name, maintainers, org = \"openscapes\", visible = TRUE)"},{"path":"https://openscapes.github.io/kyber/reference/create_team.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a Team on GitHub for an Organization — create_team","text":"name name team. maintainers One GitHub usernames team maintainers. org GitHub organization team. visible team visible every member organization?","code":""},{"path":"https://openscapes.github.io/kyber/reference/create_team.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create a Team on GitHub for an Organization — create_team","text":"","code":"if (FALSE) { # One maintainer kyber::create_team(\"2021-ilm-rotj-team\", maintainers = \"jules32\") # Multiple maintainers kyber::create_team(\"2021-ilm-rotj-team\", maintainers = c(\"jules32\", \"seankross\")) }"},{"path":"https://openscapes.github.io/kyber/reference/formatting.html","id":null,"dir":"Reference","previous_headings":"","what":"Readme Formatting — formatting","title":"Readme Formatting — formatting","text":"Functions help format yaml data nicely Readme templates.","code":""},{"path":"https://openscapes.github.io/kyber/reference/formatting.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Readme Formatting — formatting","text":"","code":"ky_fmt_wiki_link(link) ky_fmt_schedule(schedule)"},{"path":"https://openscapes.github.io/kyber/reference/formatting.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Readme Formatting — formatting","text":"link url online wiki. schedule list data frames combined, row-wise.","code":""},{"path":"https://openscapes.github.io/kyber/reference/init_repo.html","id":null,"dir":"Reference","previous_headings":"","what":"Initialize a GitHub repository with a README.Rmd — init_repo","title":"Initialize a GitHub repository with a README.Rmd — init_repo","text":"Initialize GitHub repository README.Rmd","code":""},{"path":"https://openscapes.github.io/kyber/reference/init_repo.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Initialize a GitHub repository with a README.Rmd — init_repo","text":"","code":"init_repo( name, org = \"openscapes\", path = getwd(), template = \"openscapes-cohort-readme\", edit = TRUE )"},{"path":"https://openscapes.github.io/kyber/reference/init_repo.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Initialize a GitHub repository with a README.Rmd — init_repo","text":"name name GitHub repository. org GitHub organization repository. path path directory repository initialized. template Template use basis draft. either full path template directory name template directory within rmarkdown/templates directory package. edit TRUE edit template immediately","code":""},{"path":"https://openscapes.github.io/kyber/reference/init_repo.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Initialize a GitHub repository with a README.Rmd — init_repo","text":"Valid values template argument include \"openscapes-cohort-readme\", FALSE want create repository README.md.","code":""},{"path":"https://openscapes.github.io/kyber/reference/init_repo.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Initialize a GitHub repository with a README.Rmd — init_repo","text":"","code":"if (FALSE) { kyber::init_repo(\"2021-ilm-rotj\") }"},{"path":"https://openscapes.github.io/kyber/reference/ky_add_repo_to_team.html","id":null,"dir":"Reference","previous_headings":"","what":"Add a GitHub Repository to a Team — ky_add_repo_to_team","title":"Add a GitHub Repository to a Team — ky_add_repo_to_team","text":"Add GitHub Repository Team","code":""},{"path":"https://openscapes.github.io/kyber/reference/ky_add_repo_to_team.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Add a GitHub Repository to a Team — ky_add_repo_to_team","text":"","code":"ky_add_repo_to_team(repository, team, org = \"openscapes\")"},{"path":"https://openscapes.github.io/kyber/reference/ky_add_repo_to_team.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Add a GitHub Repository to a Team — ky_add_repo_to_team","text":"repository name GitHub repository. team name team. org GitHub organization owns team repository.","code":""},{"path":"https://openscapes.github.io/kyber/reference/ky_add_repo_to_team.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Add a GitHub Repository to a Team — ky_add_repo_to_team","text":"","code":"if (FALSE) { kyber::ky_add_repo_to_team(\"2021-ilm-rotj\", \"2021-ilm-rotj-team\") }"},{"path":"https://openscapes.github.io/kyber/reference/ky_add_team_members.html","id":null,"dir":"Reference","previous_headings":"","what":"Add GitHub Users to a Team — ky_add_team_members","title":"Add GitHub Users to a Team — ky_add_team_members","text":"Add GitHub Users Team","code":""},{"path":"https://openscapes.github.io/kyber/reference/ky_add_team_members.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Add GitHub Users to a Team — ky_add_team_members","text":"","code":"ky_add_team_members(team, members, org = \"openscapes\")"},{"path":"https://openscapes.github.io/kyber/reference/ky_add_team_members.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Add GitHub Users to a Team — ky_add_team_members","text":"team name team. members vector GitHub usernames. org GitHub organization owns team repository.","code":""},{"path":"https://openscapes.github.io/kyber/reference/ky_add_team_members.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Add GitHub Users to a Team — ky_add_team_members","text":"","code":"if (FALSE) { kyber::ky_add_team_members(\"2021-ilm-rotj-team\", members = c(\"erinmr\", \"seankross\")) }"},{"path":"https://openscapes.github.io/kyber/reference/ky_create_github_clinic.html","id":null,"dir":"Reference","previous_headings":"","what":"Create GitHub Clinic Files — ky_create_github_clinic","title":"Create GitHub Clinic Files — ky_create_github_clinic","text":"Create GitHub Clinic Files","code":""},{"path":"https://openscapes.github.io/kyber/reference/ky_create_github_clinic.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create GitHub Clinic Files — ky_create_github_clinic","text":"","code":"ky_create_github_clinic(names, path = getwd())"},{"path":"https://openscapes.github.io/kyber/reference/ky_create_github_clinic.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create GitHub Clinic Files — ky_create_github_clinic","text":"names vector names markdown files created. .md extension added automatically. path Path directory github-clinic created.","code":""},{"path":"https://openscapes.github.io/kyber/reference/ky_create_github_clinic.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create GitHub Clinic Files — ky_create_github_clinic","text":"","code":"if (FALSE) { ky_create_github_clinic(names = c(\"julia\", \"erin\")) file.exists(\"github-clinic\") #> TRUE list.files(\"github-clinic\") #> \"erin.md\" \"julia.md\" }"},{"path":"https://openscapes.github.io/kyber/reference/ky_create_team.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a Team on GitHub for an Organization — ky_create_team","title":"Create a Team on GitHub for an Organization — ky_create_team","text":"Create Team GitHub Organization","code":""},{"path":"https://openscapes.github.io/kyber/reference/ky_create_team.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a Team on GitHub for an Organization — ky_create_team","text":"","code":"ky_create_team(name, maintainers, org = \"openscapes\", visible = TRUE)"},{"path":"https://openscapes.github.io/kyber/reference/ky_create_team.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a Team on GitHub for an Organization — ky_create_team","text":"name name team. maintainers One GitHub usernames team maintainers. org GitHub organization team. visible team visible every member organization?","code":""},{"path":"https://openscapes.github.io/kyber/reference/ky_create_team.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create a Team on GitHub for an Organization — ky_create_team","text":"","code":"if (FALSE) { # One maintainer kyber::ky_create_team(\"2021-ilm-rotj-team\", maintainers = \"jules32\") # Multiple maintainers kyber::ky_create_team(\"2021-ilm-rotj-team\", maintainers = c(\"jules32\", \"seankross\")) }"},{"path":"https://openscapes.github.io/kyber/reference/ky_short_names.html","id":null,"dir":"Reference","previous_headings":"","what":"Make unique combinations of first and last names — ky_short_names","title":"Make unique combinations of first and last names — ky_short_names","text":"Make unique combinations first last names","code":""},{"path":"https://openscapes.github.io/kyber/reference/ky_short_names.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Make unique combinations of first and last names — ky_short_names","text":"","code":"ky_short_names(first, last)"},{"path":"https://openscapes.github.io/kyber/reference/ky_short_names.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Make unique combinations of first and last names — ky_short_names","text":"first vector first names. last vector last names.","code":""},{"path":"https://openscapes.github.io/kyber/reference/ky_short_names.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Make unique combinations of first and last names — ky_short_names","text":"","code":"if (FALSE) { first <- c(\"a\", \"b\", \"c\") last <- c(\"x1\", \"y2\", \"z3\") ky_short_names(first, last) #> \"a\" \"b\" \"c\" first <- c(\"a\", \"a\", \"c\") last <- c(\"x1\", \"y2\", \"z3\") ky_short_names(first, last) #> \"a_x\" \"a_y\" \"c\" first <- c(\"a\", \"a\", \"c\") last <- c(\"x144\", \"x255\", \"z3\") ky_short_names(first, last) #> \"a_x144\" \"a_x255\" \"c\" first <- c(\"a\", \"a\", \"c\", \"d\", \"d\") last <- c(\"x144\", \"x255\", \"z3\", \"r4\", \"t5\") ky_short_names(first, last) #> \"a_x144\" \"a_x255\" \"c\" \"d_r\" \"d_t\" first <- c(\"a\", \"a\", \"c\") last <- c(\"x1\", \"x1\", \"z3\") ky_short_names(first, last) #> \"a_x1\" \"c\" #> Warning message: #> In ky_short_names(first, last) : #> First and Last pairs are not unique. Returning only unique combinations. }"},{"path":"https://openscapes.github.io/kyber/reference/kyber_file.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the paths to files installed with kyber — kyber_file","title":"Get the paths to files installed with kyber — kyber_file","text":"function allows quickly access files installed kyber.","code":""},{"path":"https://openscapes.github.io/kyber/reference/kyber_file.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the paths to files installed with kyber — kyber_file","text":"","code":"kyber_file(path = NULL)"},{"path":"https://openscapes.github.io/kyber/reference/kyber_file.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the paths to files installed with kyber — kyber_file","text":"path name file. argument provided example files listed.","code":""},{"path":"https://openscapes.github.io/kyber/reference/kyber_file.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the paths to files installed with kyber — kyber_file","text":"vector file paths","code":""},{"path":"https://openscapes.github.io/kyber/reference/kyber_file.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Get the paths to files installed with kyber — kyber_file","text":"","code":"kyber_file(\"_opening.Rmd\") #> [1] \"/private/var/folders/ts/5shj53q914d1fbdsk1hz2dfr0000gn/T/RtmpY1qQCn/temp_libpath3ae13e27138/kyber/agendas/_opening.Rmd\""},{"path":"https://openscapes.github.io/kyber/reference/md_agenda.html","id":null,"dir":"Reference","previous_headings":"","what":"Options for creating an agenda in Markdown — md_agenda","title":"Options for creating an agenda in Markdown — md_agenda","text":"Options creating agenda Markdown","code":""},{"path":"https://openscapes.github.io/kyber/reference/md_agenda.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Options for creating an agenda in Markdown — md_agenda","text":"","code":"md_agenda()"},{"path":"https://openscapes.github.io/kyber/reference/md_agenda.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Options for creating an agenda in Markdown — md_agenda","text":"list options.","code":""},{"path":"https://openscapes.github.io/kyber/reference/pipe.html","id":null,"dir":"Reference","previous_headings":"","what":"Pipe operator — %>%","title":"Pipe operator — %>%","text":"See magrittr::%>% details.","code":""},{"path":"https://openscapes.github.io/kyber/reference/pipe.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Pipe operator — %>%","text":"","code":"lhs %>% rhs"},{"path":"https://openscapes.github.io/kyber/reference/pipe.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Pipe operator — %>%","text":"lhs value magrittr placeholder. rhs function call using magrittr semantics.","code":""},{"path":"https://openscapes.github.io/kyber/reference/pipe.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Pipe operator — %>%","text":"result calling rhs(lhs).","code":""},{"path":"https://openscapes.github.io/kyber/reference/short_names.html","id":null,"dir":"Reference","previous_headings":"","what":"Make unique combinations of first and last names — short_names","title":"Make unique combinations of first and last names — short_names","text":"Make unique combinations first last names","code":""},{"path":"https://openscapes.github.io/kyber/reference/short_names.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Make unique combinations of first and last names — short_names","text":"","code":"short_names(first, last)"},{"path":"https://openscapes.github.io/kyber/reference/short_names.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Make unique combinations of first and last names — short_names","text":"first vector first names. last vector last names.","code":""},{"path":"https://openscapes.github.io/kyber/reference/short_names.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Make unique combinations of first and last names — short_names","text":"","code":"if (FALSE) { first <- c(\"a\", \"b\", \"c\") last <- c(\"x1\", \"y2\", \"z3\") short_names(first, last) #> \"a\" \"b\" \"c\" first <- c(\"a\", \"a\", \"c\") last <- c(\"x1\", \"y2\", \"z3\") short_names(first, last) #> \"a_x\" \"a_y\" \"c\" first <- c(\"a\", \"a\", \"c\") last <- c(\"x144\", \"x255\", \"z3\") short_names(first, last) #> \"a_x144\" \"a_x255\" \"c\" first <- c(\"a\", \"a\", \"c\", \"d\", \"d\") last <- c(\"x144\", \"x255\", \"z3\", \"r4\", \"t5\") short_names(first, last) #> \"a_x144\" \"a_x255\" \"c\" \"d_r\" \"d_t\" first <- c(\"a\", \"a\", \"c\") last <- c(\"x1\", \"x1\", \"z3\") short_names(first, last) #> \"a_x1\" \"c\" #> Warning message: #> In ky_short_names(first, last) : #> First and Last pairs are not unique. Returning only unique combinations. }"}]
+[{"path":"https://openscapes.github.io/kyber/articles/configuration.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"Configuring Google Sheets and GitHub for Kyber","text":"main purpose Kyber automate common tasks need done start Openscapes Champions Cohort. level automation requires authorize computer Google Sheets GitHub.","code":""},{"path":"https://openscapes.github.io/kyber/articles/configuration.html","id":"configuring-google-sheets","dir":"Articles","previous_headings":"","what":"Configuring Google Sheets","title":"Configuring Google Sheets and GitHub for Kyber","text":"Kyber interacts Google Sheets via googlesheets4 package. package makes easy authorize computer Kyber can access Google Sheets programmatically. Run following code configure googlesheets4: function redirect web browser can log Google account. authorized googlesheets4, can confirm configured correctly running following: detailed information, see gs4_auth() documentation googlesheets4 authorization troubleshooting documentation.","code":"library(googlesheets4) gs4_auth() gs4_user() #> Logged in to googlesheets4 as your-name@email.com."},{"path":"https://openscapes.github.io/kyber/articles/configuration.html","id":"troubelshooting-google-sheets","dir":"Articles","previous_headings":"Configuring Google Sheets","what":"Troubelshooting Google Sheets","title":"Configuring Google Sheets and GitHub for Kyber","text":"authorized computer use googlesheets4 may see following error: success troubleshooting error following method. First, try reading Google Sheet R: see following prompt: Enter 0 press Enter key. computer’s browser launch load Google’s authorization page. Reauthorize account via web browser see following message R console:","code":"The googlesheets4 package is requesting access to your Google account. Select a pre-authorised account or enter '0' to obtain a new token. Press Esc/Ctrl + C to cancel. 1: username@email.com Selection: 1 Auto-refreshing stale OAuth token. Error in `gargle_abort_request_failed()`: ! Client error: (403) PERMISSION_DENIED ... library(googlesheets4) cohort_registry_url <- \"https://docs.google.com/spreadsheets/sheet-url...\" read_sheet(cohort_registry_url) Selection: Waiting for authentication in browser... Press Esc/Ctrl + C to abort Authentication complete."},{"path":"https://openscapes.github.io/kyber/articles/configuration.html","id":"configuring-git-and-github","dir":"Articles","previous_headings":"","what":"Configuring Git and GitHub","title":"Configuring Google Sheets and GitHub for Kyber","text":"One main purposes Kyber automate processes people normally “hand.” authorizing Kyber GitHub account, allowing Kyber act “” GitHub. 🚨 word caution: take care using Kyber functions interact GitHub. Kyber designed delete things GitHub Kyber, however determined use Kyber make big mess. going write code functions use Kyber, try avoid using Kyber within code designed iterate execute multiple commands. includes loops, mapping functions like sapply() purrr::map().","code":""},{"path":"https://openscapes.github.io/kyber/articles/configuration.html","id":"configuring-git","dir":"Articles","previous_headings":"Configuring Git and GitHub","what":"Configuring Git","title":"Configuring Google Sheets and GitHub for Kyber","text":"Make sure Git installed computer. need install Git can find instructions specific operating system online Git documentation GitHub guide.","code":""},{"path":"https://openscapes.github.io/kyber/articles/configuration.html","id":"configuring-github","dir":"Articles","previous_headings":"Configuring Git and GitHub","what":"Configuring GitHub","title":"Configuring Google Sheets and GitHub for Kyber","text":"get started configuring GitHub, first make sure GitHub account logged . Take note GitHub username choose email address use sign GitHub. installing Git, make sure install Gert package, Kyber uses interact Git. freshly installed Git, use Gert set GitHub username email address locally following code: Confirm configuration set correctly running: Now configured GitHub username email address Git, need use GitHub generate token Kyber use connect GitHub account. Keeping token private extremely important, since anyone token can act GitHub. ’s need save token however, just need copy paste R console . Run code , open web browser page GitHub appropriate settings token already selected. execute code , scroll bottom page click green “Generate token” button. token appear string 40 random alphanumeric characters start ghp_. Copy string GitHub running code . prompted enter token R console: Paste token R console press Enter, see: can check make sure credentials set running: Everything now configured start using Kyber.","code":"library(gert) git_config_global_set(\"user.name\", \"[your GitHub username]\") git_config_global_set(\"user.email\", \"[the email you used to sign up for GitHub]\") git_config_global() library(usethis) create_github_token( scopes = c(\"repo\", \"user\", \"gist\", \"workflow\", \"admin:org\"), description = paste0(\"kyber-\", Sys.Date()) ) #> • Call `gitcreds::gitcreds_set()` to register this token in the local Git credential store #> It is also a great idea to store this token in any password-management software that you use #> • Open URL 'https://github.com/settings/tokens/new?scopes=repo,user,gist,workflow,admin:org&description=kyber-2023-04-22' library(gitcreds) gitcreds_set() ? Enter password or token: -> Adding new credentials... -> Removing credentials from cache... -> Done. gitcreds_get() protocol: https host : github.com username: PersonalAccessToken password: <-- hidden -->"},{"path":"https://openscapes.github.io/kyber/articles/github-repo.html","id":"configure-github","dir":"Articles","previous_headings":"","what":"Configure GitHub","title":"Creating a Cohort-Specific GitHub Repository with Kyber","text":"Make sure computer configured according instructions vignette(\"configuration\"). Run following code see GitHub credentials set : credentials detected get result like:","code":"library(gitcreds) gitcreds_get() protocol: https host : github.com username: PersonalAccessToken password: <-- hidden -->"},{"path":"https://openscapes.github.io/kyber/articles/github-repo.html","id":"creating-the-repository","dir":"Articles","previous_headings":"","what":"Creating the Repository","title":"Creating a Cohort-Specific GitHub Repository with Kyber","text":"Champions Cohort GitHub repository. name repository match corresponding cohort_name Cohort Registry. init_repo() function code following: checks see GitHub repository trying create already exists. exist, result error. tries initialize GitHub repository computer. repository already exists path argument, result error. repository created GitHub. create local Git repository, add code conduct (via add_code_of_conduct()), add .gitignore file (via add_gitignore()), git add git commit files git push-ing files GitHub. Finally create README.Rmd file repository edit.","code":"library(kyber) repo_name <- \"2021-ilm-rotj\" repo_path <- init_repo(repo_name)"},{"path":[]},{"path":"https://openscapes.github.io/kyber/articles/quick-cohort-setup.html","id":"configuration","dir":"Articles","previous_headings":"","what":"Configuration","title":"Quick Start Guide","text":"Using Kyber requires configuration R packages since Kyber functions automate processes GitHub normally hand. First, make sure googlesheets4 installed authorized computer read Google Sheets. Run following test configuration settings:","code":"library(googlesheets4) cohort_registry_url <- \"https://docs.google.com/spreadsheets/d/1Ys9KiTXXmZ_laBoCV2QWEm7AcnGSVQaXvm2xpi4XTSc/\" read_sheet(cohort_registry_url, sheet = \"test-sheet\") library(usethis) library(gitcreds) create_github_token( scopes = c(\"repo\", \"user\", \"gist\", \"workflow\", \"admin:org\") ) gitcreds_set()"},{"path":"https://openscapes.github.io/kyber/articles/quick-cohort-setup.html","id":"example-workflow","dir":"Articles","previous_headings":"","what":"Example Workflow","title":"Quick Start Guide","text":"workflow often happens 4 separate stages: create repo readme (pre-cohort) create github-clinic files (days GitHub Clinic Call 2) create github team add usernames (day Clinic, usernames) create agenda documents Cohort Call creating GitHub Team adding usernames, Kyber requires set GitHub Personal Access Token scopes repo admin:org. See GitHub PAT documentation information generate PAT. can create PAT usethis::create_github_token() defaults, plus admin:org. Please make sure share PAT commit Git repository, since anyone PAT can act GitHub.","code":""},{"path":"https://openscapes.github.io/kyber/articles/quick-cohort-setup.html","id":"create-github-repo","dir":"Articles","previous_headings":"Example Workflow","what":"Create GitHub repo","title":"Quick Start Guide","text":"","code":"library(kyber) library(rmarkdown) library(tibble) library(fs) repo_name <- \"2021-ilm-rotj\" # This will open a README.Rmd for you to edit repo_path <- create_repo(repo_name) # Then render the README.Rmd to README.md render(path(repo_path, \"README.Rmd\")) # We still need to work out the next part of the workflow and the extent to # which it should be automated, but I imagine something like: # # 1. Move README.Rmd out of this repository to another repository that perhaps # only contains README.Rmds. # 2. Git add, commit, and push in the repo that only contains README.Rmds. # 3. Git add, commit, and push in this repository."},{"path":"https://openscapes.github.io/kyber/articles/quick-cohort-setup.html","id":"github-clinic---generate-markdown-files-for-each-participant","dir":"Articles","previous_headings":"Example Workflow","what":"GitHub Clinic - Generate Markdown Files for Each Participant","title":"Quick Start Guide","text":"Clone Cohort Repo RStudio, run following code. Detailed instructions looks like: Open RStudio, create new script (temporary, ’ll deleted ’s nicer place work) Copy following script, delete examples “Erin, Julie”. ’ll keep _demo.md, ’ll demo live. Go ParticipantsList, copy 2 first last columns Back RStudio, put cursor inside “tribble” parentheses, , Addin menu top RStudio, select “Paste Tribble”! , double-check column headers - likely first last written kyber::short_names call. easiest thing update column names kyber::short_names code running (example: kyber::short_names(cohort$First.Name, cohort$Last.Name) ’ll now .md files participant cohort! duplicate names _LastInitial. Check clicking github-clinic folder opening file. Now, commit push Markdown files github-clinic folder plus `horst-champions-trailhead.png top-level folder GitHub.com. Don’t push .gitignore .rproj since ’re relevant Clinic. (can Command-select files unclick 2 don’t want).","code":"library(stringr) library(datapasta) # install.packages(\"datapasta\") library(kyber) ## remotes::install_github(\"openscapes/kyber\") library(here) library(fs) ## use `datapasta` addin to vector_tribble these names formatted from the spreadsheet! cohort <- c(tibble::tribble( ~first, ~last, \"_demo\", \"\", \"Erin\", \"Robinson\", \"Julie\", \"Lowndes\" ) ) ## create .md files for each Champion kyber::short_names(cohort$first, cohort$last) |> create_github_clinic(here()) ## copy trailhead image into parent folder trailhead_png <- system.file(\"kyber-templates\", \"horst-champions-trailhead.png\", package = \"kyber\") fs::file_copy(trailhead_png, here())"},{"path":"https://openscapes.github.io/kyber/articles/quick-cohort-setup.html","id":"create-github-team-add-usernames","dir":"Articles","previous_headings":"Example Workflow","what":"Create GitHub team, add usernames","title":"Quick Start Guide","text":"Open RStudio, create new script (temporary, ’ll deleted ’s nicer place work) Paste following review code. may already GitHub PAT set; information top README . Run code first -example usernames members variable check - Check example usernames added Cohort GitHub: go github.com/openscapes/cohort-name > Settings > Collaborators Teams team created username appears repo, woohoo! Open ParticipantsList copy GitHub username column, including header. RStudio, put cursor members <- use datapasta Addin > Paste Tribble paste usernames members variable, deleting previous example user. pasting R script, rename header “username” (spaces asterices) Run following code check everyone added! Finally, ParticipantList, highlight usernames ’ve added green. helps us know else add live clinic session. Yay! Now highlight usernames green ParticpantList bookkeeping!","code":"## First make sure you have a GitHub PAT set. If you need one, here's what you'd do: # usethis::create_github_token() ## use their defaults plus `admin:org` # Sys.setenv(GITHUB_PAT = \"ghp_0id4zkO4GqSuEsC6Zs22wf34Y0u3270\") library(kyber) library(rmarkdown) library(tibble) library(fs) library(datapasta) ## create naming for GitHub - do this once! repo_name <- \"2022-nasa-champions\" team_name <- paste0(repo_name, \"-cohort\") create_team(team_name, maintainers = \"jules32\", org = \"openscapes\") ## create member variable - do this twice (first as test!) ## this is where you'll use datapasta and run everything below members <- tibble::tribble( ~username, \"eeholmes\" ) add_team_members(team_name, members = members$username, org = \"openscapes\") add_repo_to_team(repo_name, team_name, org = \"openscapes\")"},{"path":"https://openscapes.github.io/kyber/articles/quick-cohort-setup.html","id":"agendas","dir":"Articles","previous_headings":"Example Workflow","what":"Agendas","title":"Quick Start Guide","text":", move Google Doc fine-tune formatting, follow notes (July 14, 2022): RStudio, Knit (PreviewHTML) resulting agenda.md copy-paste result Google Doc (example: 03_CallAgenda [ 2022-noaa-afsc ]. might need expand knitted preview browser get copy/paste correctly Google Docs Move Google Doc Openscapes Workspace folder Openscapes_CohortCalls [ year-cohort-name ]. Select (cmd-) change font Open Sans Make p1 opening text 9 point font (text horizontal line & Call title) Make Header 1 font 18, bold; update heading 1 match (see screenshot ; Stef notes “update heading match” working docs) Make Header 2 font 14, bold; update heading 2 match “add space” “remove space paragraph” throughout make spacing little cozy (yes seems odd undo, works) “add space” “remove space paragraph” throughout make spacing little cozy Review doc fix font weirdness Add page numbers “update heading 1 match”: (Stef notes working docs) Google Doc, update text style (headings, normal text, font type, size etc), highlight section style want, click styles dropdown shown screenshot, select e.g. “Update Heading 1 match”. Double check doc ’ve noticed missed agenda. Screen Shot 2022-07-14 5 50 28 PM","code":"kyber::call_agenda( registry_url = \"https://docs.google.com/spreadsheets/d/1Ys9KiTXXmZ_laBoCV2QWEm7AcnGSVQaXvm2xpi4XTSc/edit#gid=942365997\", cohort_id = \"2022-nasa-champions\", call_number = 3)"},{"path":"https://openscapes.github.io/kyber/authors.html","id":null,"dir":"","previous_headings":"","what":"Authors","title":"Authors and Citation","text":"Sean Kross. Author, maintainer. Julia Lowndes. Author.","code":""},{"path":"https://openscapes.github.io/kyber/authors.html","id":"citation","dir":"","previous_headings":"","what":"Citation","title":"Authors and Citation","text":"Kross S, Lowndes J (2023). kyber: Set Learning Cohorts GitHub. R package version 0.1.0, https://openscapes.github.io/kyber/.","code":"@Manual{, title = {kyber: Set Up Learning Cohorts on GitHub}, author = {Sean Kross and Julia Lowndes}, year = {2023}, note = {R package version 0.1.0}, url = {https://openscapes.github.io/kyber/}, }"},{"path":[]},{"path":"https://openscapes.github.io/kyber/index.html","id":"installation","dir":"","previous_headings":"","what":"Installation","title":"Set Up Learning Cohorts on GitHub","text":"can install Kyber using remotes package:","code":"remotes::install_github(\"openscapes/kyber@main\")"},{"path":"https://openscapes.github.io/kyber/index.html","id":"overview","dir":"","previous_headings":"","what":"Overview","title":"Set Up Learning Cohorts on GitHub","text":"Kyber contains tools setting learning cohorts GitHub, purpose-built Openscapes Champions Program. init_repo() initializes local git repository new GitHub repository README.Rmd, code conduct, gitignore. create_github_clinic() creates files need teaching GitHub clinic. create_team() creates new team GitHub. add_team_members() adds members team GitHub based GitHub usernames. add_team_to_repo() adds team GitHub repository. call_agenda() creates agenda documents individual Cohort Call.","code":""},{"path":[]},{"path":"https://openscapes.github.io/kyber/index.html","id":"configuration","dir":"","previous_headings":"Quick Cohort Setup","what":"Configuration","title":"Set Up Learning Cohorts on GitHub","text":"Using Kyber requires configuration R packages since Kyber functions automate processes GitHub normally hand. First, make sure googlesheets4 installed authorized computer read Google Sheets. Run following test configuration settings:","code":"library(googlesheets4) cohort_registry_url <- \"https://docs.google.com/spreadsheets/d/1Ys9KiTXXmZ_laBoCV2QWEm7AcnGSVQaXvm2xpi4XTSc/\" read_sheet(cohort_registry_url, sheet = \"test-sheet\") library(usethis) library(gitcreds) create_github_token( scopes = c(\"repo\", \"user\", \"gist\", \"workflow\", \"admin:org\") ) gitcreds_set()"},{"path":"https://openscapes.github.io/kyber/index.html","id":"example-workflow","dir":"","previous_headings":"","what":"Example Workflow","title":"Set Up Learning Cohorts on GitHub","text":"workflow often happens 4 separate stages: create repo readme (pre-cohort) create github-clinic files (days GitHub Clinic Call 2) create github team add usernames (day Clinic, usernames) create agenda documents Cohort Call creating GitHub Team adding usernames, Kyber requires set GitHub Personal Access Token scopes repo admin:org. See GitHub PAT documentation information generate PAT. can create PAT usethis::create_github_token() defaults, plus admin:org. Please make sure share PAT commit Git repository, since anyone PAT can act GitHub.","code":""},{"path":"https://openscapes.github.io/kyber/index.html","id":"create-github-repo","dir":"","previous_headings":"Example Workflow","what":"Create GitHub repo","title":"Set Up Learning Cohorts on GitHub","text":"","code":"library(kyber) library(rmarkdown) library(tibble) library(fs) repo_name <- \"2021-ilm-rotj\" # This will open a README.Rmd for you to edit repo_path <- create_repo(repo_name) # Then render the README.Rmd to README.md render(path(repo_path, \"README.Rmd\")) # We still need to work out the next part of the workflow and the extent to # which it should be automated, but I imagine something like: # # 1. Move README.Rmd out of this repository to another repository that perhaps # only contains README.Rmds. # 2. Git add, commit, and push in the repo that only contains README.Rmds. # 3. Git add, commit, and push in this repository."},{"path":"https://openscapes.github.io/kyber/index.html","id":"github-clinic---generate-markdown-files-for-each-participant","dir":"","previous_headings":"Example Workflow","what":"GitHub Clinic - Generate Markdown Files for Each Participant","title":"Set Up Learning Cohorts on GitHub","text":"Clone Cohort Repo RStudio, run following code. Detailed instructions looks like: Open RStudio, create new script (temporary, ’ll deleted ’s nicer place work) Copy following script, delete examples “Erin, Julie”. ’ll keep _demo.md, ’ll demo live. Go ParticipantsList, copy 2 first last columns Back RStudio, put cursor inside “tribble” parentheses, , Addin menu top RStudio, select “Paste Tribble”! , double-check column headers - likely first last written kyber::short_names call. easiest thing update column names kyber::short_names code running (example: kyber::short_names(cohort$First.Name, cohort$Last.Name) ’ll now .md files participant cohort! duplicate names _LastInitial. Check clicking github-clinic folder opening file. Now, commit push Markdown files github-clinic folder plus `horst-champions-trailhead.png top-level folder GitHub.com. Don’t push .gitignore .rproj since ’re relevant Clinic. (can Command-select files unclick 2 don’t want).","code":"library(stringr) library(datapasta) # install.packages(\"datapasta\") library(kyber) ## remotes::install_github(\"openscapes/kyber\") library(here) library(fs) ## use `datapasta` addin to vector_tribble these names formatted from the spreadsheet! cohort <- c(tibble::tribble( ~first, ~last, \"_demo\", \"\", \"Erin\", \"Robinson\", \"Julie\", \"Lowndes\" ) ) ## create .md files for each Champion kyber::short_names(cohort$first, cohort$last) |> create_github_clinic(here()) ## copy trailhead image into parent folder trailhead_png <- system.file(\"kyber-templates\", \"horst-champions-trailhead.png\", package = \"kyber\") fs::file_copy(trailhead_png, here())"},{"path":"https://openscapes.github.io/kyber/index.html","id":"create-github-team-add-usernames","dir":"","previous_headings":"Example Workflow","what":"Create GitHub team, add usernames","title":"Set Up Learning Cohorts on GitHub","text":"Open RStudio, create new script (temporary, ’ll deleted ’s nicer place work) Paste following review code. may already GitHub PAT set; information top README . Run code first -example usernames members variable check - Check example usernames added Cohort GitHub: go github.com/openscapes/cohort-name > Settings > Collaborators Teams team created username appears repo, woohoo! Open ParticipantsList copy GitHub username column, including header. RStudio, put cursor members <- use datapasta Addin > Paste Tribble paste usernames members variable, deleting previous example user. pasting R script, rename header “username” (spaces asterices) Run following code check everyone added! Finally, ParticipantList, highlight usernames ’ve added green. helps us know else add live clinic session. Yay! Now highlight usernames green ParticpantList bookkeeping!","code":"## First make sure you have a GitHub PAT set. If you need one, here's what you'd do: # usethis::create_github_token() ## use their defaults plus `admin:org` # Sys.setenv(GITHUB_PAT = \"ghp_0id4zkO4GqSuEsC6Zs22wf34Y0u3270\") library(kyber) library(rmarkdown) library(tibble) library(fs) library(datapasta) ## create naming for GitHub - do this once! repo_name <- \"2022-nasa-champions\" team_name <- paste0(repo_name, \"-cohort\") create_team(team_name, maintainers = \"jules32\", org = \"openscapes\") ## create member variable - do this twice (first as test!) ## this is where you'll use datapasta and run everything below members <- tibble::tribble( ~username, \"eeholmes\" ) add_team_members(team_name, members = members$username, org = \"openscapes\") add_repo_to_team(repo_name, team_name, org = \"openscapes\")"},{"path":"https://openscapes.github.io/kyber/index.html","id":"agendas","dir":"","previous_headings":"Example Workflow","what":"Agendas","title":"Set Up Learning Cohorts on GitHub","text":", move Google Doc fine-tune formatting, follow notes (July 14, 2022): RStudio, Knit (PreviewHTML) resulting agenda.md copy-paste result Google Doc (example: 03_CallAgenda [ 2022-noaa-afsc ]. might need expand knitted preview browser get copy/paste correctly Google Docs Move Google Doc Openscapes Workspace folder Openscapes_CohortCalls [ year-cohort-name ]. Select (cmd-) change font Open Sans Make p1 opening text 9 point font (text horizontal line & Call title) Make Header 1 font 18, bold; update heading 1 match (see screenshot ; Stef notes “update heading match” working docs) Make Header 2 font 14, bold; update heading 2 match “add space” “remove space paragraph” throughout make spacing little cozy (yes seems odd undo, works) “add space” “remove space paragraph” throughout make spacing little cozy Review doc fix font weirdness Add page numbers “update heading 1 match”: (Stef notes working docs) Google Doc, update text style (headings, normal text, font type, size etc), highlight section style want, click styles dropdown shown screenshot, select e.g. “Update Heading 1 match”. Double check doc ’ve noticed missed agenda. Screen Shot 2022-07-14 5 50 28 PM","code":"kyber::call_agenda( registry_url = \"https://docs.google.com/spreadsheets/d/1Ys9KiTXXmZ_laBoCV2QWEm7AcnGSVQaXvm2xpi4XTSc/edit#gid=942365997\", cohort_id = \"2022-nasa-champions\", call_number = 3)"},{"path":"https://openscapes.github.io/kyber/reference/add_code_of_conduct.html","id":null,"dir":"Reference","previous_headings":"","what":"Add a Code of Conduct to a directory. — add_code_of_conduct","title":"Add a Code of Conduct to a directory. — add_code_of_conduct","text":"Add Code Conduct directory.","code":""},{"path":"https://openscapes.github.io/kyber/reference/add_code_of_conduct.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Add a Code of Conduct to a directory. — add_code_of_conduct","text":"","code":"add_code_of_conduct(path = getwd())"},{"path":"https://openscapes.github.io/kyber/reference/add_code_of_conduct.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Add a Code of Conduct to a directory. — add_code_of_conduct","text":"path path directory code conduct file created.","code":""},{"path":"https://openscapes.github.io/kyber/reference/add_gitignore.html","id":null,"dir":"Reference","previous_headings":"","what":"Add .gitignore to a directory. — add_gitignore","title":"Add .gitignore to a directory. — add_gitignore","text":"Add .gitignore directory.","code":""},{"path":"https://openscapes.github.io/kyber/reference/add_gitignore.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Add .gitignore to a directory. — add_gitignore","text":"","code":"add_gitignore(path = getwd())"},{"path":"https://openscapes.github.io/kyber/reference/add_gitignore.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Add .gitignore to a directory. — add_gitignore","text":"path path directory git ignore file created.","code":""},{"path":"https://openscapes.github.io/kyber/reference/add_repo_to_team.html","id":null,"dir":"Reference","previous_headings":"","what":"Add a GitHub Repository to a Team — add_repo_to_team","title":"Add a GitHub Repository to a Team — add_repo_to_team","text":"Add GitHub Repository Team","code":""},{"path":"https://openscapes.github.io/kyber/reference/add_repo_to_team.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Add a GitHub Repository to a Team — add_repo_to_team","text":"","code":"add_repo_to_team(repository, team, org = \"openscapes\")"},{"path":"https://openscapes.github.io/kyber/reference/add_repo_to_team.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Add a GitHub Repository to a Team — add_repo_to_team","text":"repository name GitHub repository. team name team. org GitHub organization owns team repository.","code":""},{"path":"https://openscapes.github.io/kyber/reference/add_repo_to_team.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Add a GitHub Repository to a Team — add_repo_to_team","text":"","code":"if (FALSE) { kyber::add_repo_to_team(\"2021-ilm-rotj\", \"2021-ilm-rotj-team\") }"},{"path":"https://openscapes.github.io/kyber/reference/add_team_members.html","id":null,"dir":"Reference","previous_headings":"","what":"Add GitHub Users to a Team — add_team_members","title":"Add GitHub Users to a Team — add_team_members","text":"Add GitHub Users Team","code":""},{"path":"https://openscapes.github.io/kyber/reference/add_team_members.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Add GitHub Users to a Team — add_team_members","text":"","code":"add_team_members(team, members, org = \"openscapes\")"},{"path":"https://openscapes.github.io/kyber/reference/add_team_members.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Add GitHub Users to a Team — add_team_members","text":"team name team. members vector GitHub usernames. org GitHub organization owns team repository.","code":""},{"path":"https://openscapes.github.io/kyber/reference/add_team_members.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Add GitHub Users to a Team — add_team_members","text":"","code":"if (FALSE) { kyber::add_team_members(\"2021-ilm-rotj-team\", members = c(\"erinmr\", \"seankross\")) }"},{"path":"https://openscapes.github.io/kyber/reference/add_team_to_repo.html","id":null,"dir":"Reference","previous_headings":"","what":"Add a GitHub Team to a Repository — add_team_to_repo","title":"Add a GitHub Team to a Repository — add_team_to_repo","text":"Add GitHub Team Repository","code":""},{"path":"https://openscapes.github.io/kyber/reference/add_team_to_repo.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Add a GitHub Team to a Repository — add_team_to_repo","text":"","code":"add_team_to_repo(repository, team, org = \"openscapes\")"},{"path":"https://openscapes.github.io/kyber/reference/add_team_to_repo.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Add a GitHub Team to a Repository — add_team_to_repo","text":"repository name GitHub repository. team name team. org GitHub organization owns team repository.","code":""},{"path":"https://openscapes.github.io/kyber/reference/add_team_to_repo.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Add a GitHub Team to a Repository — add_team_to_repo","text":"","code":"if (FALSE) { kyber::add_team_to_repo(\"2021-ilm-rotj\", \"2021-ilm-rotj-team\") }"},{"path":"https://openscapes.github.io/kyber/reference/call_agenda.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a Call Agenda — call_agenda","title":"Create a Call Agenda — call_agenda","text":"Create Call Agenda","code":""},{"path":"https://openscapes.github.io/kyber/reference/call_agenda.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a Call Agenda — call_agenda","text":"","code":"call_agenda( registry_url, cohort_id, call_number, cohort_sheet = \"cohort_metadata\", call_sheet = \"call_metadata\", website = paste0(\"https://openscapes.github.io/\", cohort_id), output_format = md_agenda(), output_file = \"agenda.md\" )"},{"path":"https://openscapes.github.io/kyber/reference/call_agenda.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a Call Agenda — call_agenda","text":"registry_url URL cohort registry. cohort_id ID cohort. call_number call number agenda. cohort_sheet sheet registry cohort information. call_sheet sheet registry information individual calls. website website cohort. output_format output format agenda. output_file name output file file extension.","code":""},{"path":"https://openscapes.github.io/kyber/reference/create_github_clinic.html","id":null,"dir":"Reference","previous_headings":"","what":"Create GitHub Clinic Files — create_github_clinic","title":"Create GitHub Clinic Files — create_github_clinic","text":"Create GitHub Clinic Files","code":""},{"path":"https://openscapes.github.io/kyber/reference/create_github_clinic.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create GitHub Clinic Files — create_github_clinic","text":"","code":"create_github_clinic(names, path = getwd())"},{"path":"https://openscapes.github.io/kyber/reference/create_github_clinic.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create GitHub Clinic Files — create_github_clinic","text":"names vector names markdown files created. .md extension added automatically. path Path directory github-clinic created.","code":""},{"path":"https://openscapes.github.io/kyber/reference/create_github_clinic.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create GitHub Clinic Files — create_github_clinic","text":"","code":"if (FALSE) { create_github_clinic(names = c(\"julia\", \"erin\")) file.exists(\"github-clinic\") #> TRUE list.files(\"github-clinic\") #> \"erin.md\" \"julia.md\" }"},{"path":"https://openscapes.github.io/kyber/reference/create_readme.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a README.Rmd from a Kyber Template — create_readme","title":"Create a README.Rmd from a Kyber Template — create_readme","text":"Create README.Rmd Kyber Template","code":""},{"path":"https://openscapes.github.io/kyber/reference/create_readme.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a README.Rmd from a Kyber Template — create_readme","text":"","code":"create_readme( file = \"README.Rmd\", template = \"openscapes-cohort-readme\", edit = TRUE )"},{"path":"https://openscapes.github.io/kyber/reference/create_readme.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a README.Rmd from a Kyber Template — create_readme","text":"file File name draft template Template use basis draft. either full path template directory name template directory within rmarkdown/templates directory package. edit TRUE edit template immediately","code":""},{"path":"https://openscapes.github.io/kyber/reference/create_readme.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Create a README.Rmd from a Kyber Template — create_readme","text":"Valid values template argument include \"openscapes-cohort-readme\".","code":""},{"path":"https://openscapes.github.io/kyber/reference/create_readme.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create a README.Rmd from a Kyber Template — create_readme","text":"","code":"if (FALSE) { kyber::create_readme() }"},{"path":"https://openscapes.github.io/kyber/reference/create_repo.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a GitHub repository with a README.Rmd — create_repo","title":"Create a GitHub repository with a README.Rmd — create_repo","text":"Create GitHub repository README.Rmd","code":""},{"path":"https://openscapes.github.io/kyber/reference/create_repo.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a GitHub repository with a README.Rmd — create_repo","text":"","code":"create_repo( name, org = \"openscapes\", path = getwd(), template = \"openscapes-cohort-readme\", edit = TRUE )"},{"path":"https://openscapes.github.io/kyber/reference/create_repo.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a GitHub repository with a README.Rmd — create_repo","text":"name name repository. org GitHub organization repository. path path directory repository created. template Template use basis draft. either full path template directory name template directory within rmarkdown/templates directory package. edit TRUE edit template immediately","code":""},{"path":"https://openscapes.github.io/kyber/reference/create_repo.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Create a GitHub repository with a README.Rmd — create_repo","text":"Valid values template argument include \"openscapes-cohort-readme\", FALSE want create repository README.md.","code":""},{"path":"https://openscapes.github.io/kyber/reference/create_repo.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create a GitHub repository with a README.Rmd — create_repo","text":"","code":"if (FALSE) { kyber::create_repo(\"2021-ilm-rotj\") }"},{"path":"https://openscapes.github.io/kyber/reference/create_team.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a Team on GitHub for an Organization — create_team","title":"Create a Team on GitHub for an Organization — create_team","text":"Create Team GitHub Organization","code":""},{"path":"https://openscapes.github.io/kyber/reference/create_team.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a Team on GitHub for an Organization — create_team","text":"","code":"create_team(name, maintainers, org = \"openscapes\", visible = TRUE)"},{"path":"https://openscapes.github.io/kyber/reference/create_team.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a Team on GitHub for an Organization — create_team","text":"name name team. maintainers One GitHub usernames team maintainers. org GitHub organization team. visible team visible every member organization?","code":""},{"path":"https://openscapes.github.io/kyber/reference/create_team.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create a Team on GitHub for an Organization — create_team","text":"","code":"if (FALSE) { # One maintainer kyber::create_team(\"2021-ilm-rotj-team\", maintainers = \"jules32\") # Multiple maintainers kyber::create_team(\"2021-ilm-rotj-team\", maintainers = c(\"jules32\", \"seankross\")) }"},{"path":"https://openscapes.github.io/kyber/reference/formatting.html","id":null,"dir":"Reference","previous_headings":"","what":"Readme Formatting — formatting","title":"Readme Formatting — formatting","text":"Functions help format yaml data nicely Readme templates.","code":""},{"path":"https://openscapes.github.io/kyber/reference/formatting.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Readme Formatting — formatting","text":"","code":"ky_fmt_wiki_link(link) ky_fmt_schedule(schedule)"},{"path":"https://openscapes.github.io/kyber/reference/formatting.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Readme Formatting — formatting","text":"link url online wiki. schedule list data frames combined, row-wise.","code":""},{"path":"https://openscapes.github.io/kyber/reference/init_repo.html","id":null,"dir":"Reference","previous_headings":"","what":"Initialize a GitHub repository with a README.Rmd — init_repo","title":"Initialize a GitHub repository with a README.Rmd — init_repo","text":"Initialize GitHub repository README.Rmd","code":""},{"path":"https://openscapes.github.io/kyber/reference/init_repo.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Initialize a GitHub repository with a README.Rmd — init_repo","text":"","code":"init_repo( name, org = \"openscapes\", path = getwd(), template = \"openscapes-cohort-readme\", edit = TRUE )"},{"path":"https://openscapes.github.io/kyber/reference/init_repo.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Initialize a GitHub repository with a README.Rmd — init_repo","text":"name name GitHub repository. org GitHub organization repository. path path directory repository initialized. template Template use basis draft. either full path template directory name template directory within rmarkdown/templates directory package. edit TRUE edit template immediately","code":""},{"path":"https://openscapes.github.io/kyber/reference/init_repo.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Initialize a GitHub repository with a README.Rmd — init_repo","text":"Valid values template argument include \"openscapes-cohort-readme\", FALSE want create repository README.md.","code":""},{"path":"https://openscapes.github.io/kyber/reference/init_repo.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Initialize a GitHub repository with a README.Rmd — init_repo","text":"","code":"if (FALSE) { kyber::init_repo(\"2021-ilm-rotj\") }"},{"path":"https://openscapes.github.io/kyber/reference/ky_add_repo_to_team.html","id":null,"dir":"Reference","previous_headings":"","what":"Add a GitHub Repository to a Team — ky_add_repo_to_team","title":"Add a GitHub Repository to a Team — ky_add_repo_to_team","text":"Add GitHub Repository Team","code":""},{"path":"https://openscapes.github.io/kyber/reference/ky_add_repo_to_team.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Add a GitHub Repository to a Team — ky_add_repo_to_team","text":"","code":"ky_add_repo_to_team(repository, team, org = \"openscapes\")"},{"path":"https://openscapes.github.io/kyber/reference/ky_add_repo_to_team.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Add a GitHub Repository to a Team — ky_add_repo_to_team","text":"repository name GitHub repository. team name team. org GitHub organization owns team repository.","code":""},{"path":"https://openscapes.github.io/kyber/reference/ky_add_repo_to_team.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Add a GitHub Repository to a Team — ky_add_repo_to_team","text":"","code":"if (FALSE) { kyber::ky_add_repo_to_team(\"2021-ilm-rotj\", \"2021-ilm-rotj-team\") }"},{"path":"https://openscapes.github.io/kyber/reference/ky_add_team_members.html","id":null,"dir":"Reference","previous_headings":"","what":"Add GitHub Users to a Team — ky_add_team_members","title":"Add GitHub Users to a Team — ky_add_team_members","text":"Add GitHub Users Team","code":""},{"path":"https://openscapes.github.io/kyber/reference/ky_add_team_members.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Add GitHub Users to a Team — ky_add_team_members","text":"","code":"ky_add_team_members(team, members, org = \"openscapes\")"},{"path":"https://openscapes.github.io/kyber/reference/ky_add_team_members.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Add GitHub Users to a Team — ky_add_team_members","text":"team name team. members vector GitHub usernames. org GitHub organization owns team repository.","code":""},{"path":"https://openscapes.github.io/kyber/reference/ky_add_team_members.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Add GitHub Users to a Team — ky_add_team_members","text":"","code":"if (FALSE) { kyber::ky_add_team_members(\"2021-ilm-rotj-team\", members = c(\"erinmr\", \"seankross\")) }"},{"path":"https://openscapes.github.io/kyber/reference/ky_create_github_clinic.html","id":null,"dir":"Reference","previous_headings":"","what":"Create GitHub Clinic Files — ky_create_github_clinic","title":"Create GitHub Clinic Files — ky_create_github_clinic","text":"Create GitHub Clinic Files","code":""},{"path":"https://openscapes.github.io/kyber/reference/ky_create_github_clinic.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create GitHub Clinic Files — ky_create_github_clinic","text":"","code":"ky_create_github_clinic(names, path = getwd())"},{"path":"https://openscapes.github.io/kyber/reference/ky_create_github_clinic.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create GitHub Clinic Files — ky_create_github_clinic","text":"names vector names markdown files created. .md extension added automatically. path Path directory github-clinic created.","code":""},{"path":"https://openscapes.github.io/kyber/reference/ky_create_github_clinic.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create GitHub Clinic Files — ky_create_github_clinic","text":"","code":"if (FALSE) { ky_create_github_clinic(names = c(\"julia\", \"erin\")) file.exists(\"github-clinic\") #> TRUE list.files(\"github-clinic\") #> \"erin.md\" \"julia.md\" }"},{"path":"https://openscapes.github.io/kyber/reference/ky_create_team.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a Team on GitHub for an Organization — ky_create_team","title":"Create a Team on GitHub for an Organization — ky_create_team","text":"Create Team GitHub Organization","code":""},{"path":"https://openscapes.github.io/kyber/reference/ky_create_team.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a Team on GitHub for an Organization — ky_create_team","text":"","code":"ky_create_team(name, maintainers, org = \"openscapes\", visible = TRUE)"},{"path":"https://openscapes.github.io/kyber/reference/ky_create_team.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a Team on GitHub for an Organization — ky_create_team","text":"name name team. maintainers One GitHub usernames team maintainers. org GitHub organization team. visible team visible every member organization?","code":""},{"path":"https://openscapes.github.io/kyber/reference/ky_create_team.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create a Team on GitHub for an Organization — ky_create_team","text":"","code":"if (FALSE) { # One maintainer kyber::ky_create_team(\"2021-ilm-rotj-team\", maintainers = \"jules32\") # Multiple maintainers kyber::ky_create_team(\"2021-ilm-rotj-team\", maintainers = c(\"jules32\", \"seankross\")) }"},{"path":"https://openscapes.github.io/kyber/reference/ky_short_names.html","id":null,"dir":"Reference","previous_headings":"","what":"Make unique combinations of first and last names — ky_short_names","title":"Make unique combinations of first and last names — ky_short_names","text":"Make unique combinations first last names","code":""},{"path":"https://openscapes.github.io/kyber/reference/ky_short_names.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Make unique combinations of first and last names — ky_short_names","text":"","code":"ky_short_names(first, last)"},{"path":"https://openscapes.github.io/kyber/reference/ky_short_names.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Make unique combinations of first and last names — ky_short_names","text":"first vector first names. last vector last names.","code":""},{"path":"https://openscapes.github.io/kyber/reference/ky_short_names.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Make unique combinations of first and last names — ky_short_names","text":"","code":"if (FALSE) { first <- c(\"a\", \"b\", \"c\") last <- c(\"x1\", \"y2\", \"z3\") ky_short_names(first, last) #> \"a\" \"b\" \"c\" first <- c(\"a\", \"a\", \"c\") last <- c(\"x1\", \"y2\", \"z3\") ky_short_names(first, last) #> \"a_x\" \"a_y\" \"c\" first <- c(\"a\", \"a\", \"c\") last <- c(\"x144\", \"x255\", \"z3\") ky_short_names(first, last) #> \"a_x144\" \"a_x255\" \"c\" first <- c(\"a\", \"a\", \"c\", \"d\", \"d\") last <- c(\"x144\", \"x255\", \"z3\", \"r4\", \"t5\") ky_short_names(first, last) #> \"a_x144\" \"a_x255\" \"c\" \"d_r\" \"d_t\" first <- c(\"a\", \"a\", \"c\") last <- c(\"x1\", \"x1\", \"z3\") ky_short_names(first, last) #> \"a_x1\" \"c\" #> Warning message: #> In ky_short_names(first, last) : #> First and Last pairs are not unique. Returning only unique combinations. }"},{"path":"https://openscapes.github.io/kyber/reference/kyber_file.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the paths to files installed with kyber — kyber_file","title":"Get the paths to files installed with kyber — kyber_file","text":"function allows quickly access files installed kyber.","code":""},{"path":"https://openscapes.github.io/kyber/reference/kyber_file.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the paths to files installed with kyber — kyber_file","text":"","code":"kyber_file(path = NULL)"},{"path":"https://openscapes.github.io/kyber/reference/kyber_file.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the paths to files installed with kyber — kyber_file","text":"path name file. argument provided example files listed.","code":""},{"path":"https://openscapes.github.io/kyber/reference/kyber_file.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the paths to files installed with kyber — kyber_file","text":"vector file paths","code":""},{"path":"https://openscapes.github.io/kyber/reference/kyber_file.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Get the paths to files installed with kyber — kyber_file","text":"","code":"kyber_file(\"_opening.Rmd\") #> [1] \"/private/var/folders/ts/5shj53q914d1fbdsk1hz2dfr0000gn/T/RtmpGYOKFD/temp_libpath19c3155bca14/kyber/agendas/_opening.Rmd\""},{"path":"https://openscapes.github.io/kyber/reference/md_agenda.html","id":null,"dir":"Reference","previous_headings":"","what":"Options for creating an agenda in Markdown — md_agenda","title":"Options for creating an agenda in Markdown — md_agenda","text":"Options creating agenda Markdown","code":""},{"path":"https://openscapes.github.io/kyber/reference/md_agenda.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Options for creating an agenda in Markdown — md_agenda","text":"","code":"md_agenda()"},{"path":"https://openscapes.github.io/kyber/reference/md_agenda.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Options for creating an agenda in Markdown — md_agenda","text":"list options.","code":""},{"path":"https://openscapes.github.io/kyber/reference/pipe.html","id":null,"dir":"Reference","previous_headings":"","what":"Pipe operator — %>%","title":"Pipe operator — %>%","text":"See magrittr::%>% details.","code":""},{"path":"https://openscapes.github.io/kyber/reference/pipe.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Pipe operator — %>%","text":"","code":"lhs %>% rhs"},{"path":"https://openscapes.github.io/kyber/reference/pipe.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Pipe operator — %>%","text":"lhs value magrittr placeholder. rhs function call using magrittr semantics.","code":""},{"path":"https://openscapes.github.io/kyber/reference/pipe.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Pipe operator — %>%","text":"result calling rhs(lhs).","code":""},{"path":"https://openscapes.github.io/kyber/reference/short_names.html","id":null,"dir":"Reference","previous_headings":"","what":"Make unique combinations of first and last names — short_names","title":"Make unique combinations of first and last names — short_names","text":"Make unique combinations first last names","code":""},{"path":"https://openscapes.github.io/kyber/reference/short_names.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Make unique combinations of first and last names — short_names","text":"","code":"short_names(first, last)"},{"path":"https://openscapes.github.io/kyber/reference/short_names.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Make unique combinations of first and last names — short_names","text":"first vector first names. last vector last names.","code":""},{"path":"https://openscapes.github.io/kyber/reference/short_names.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Make unique combinations of first and last names — short_names","text":"","code":"if (FALSE) { first <- c(\"a\", \"b\", \"c\") last <- c(\"x1\", \"y2\", \"z3\") short_names(first, last) #> \"a\" \"b\" \"c\" first <- c(\"a\", \"a\", \"c\") last <- c(\"x1\", \"y2\", \"z3\") short_names(first, last) #> \"a_x\" \"a_y\" \"c\" first <- c(\"a\", \"a\", \"c\") last <- c(\"x144\", \"x255\", \"z3\") short_names(first, last) #> \"a_x144\" \"a_x255\" \"c\" first <- c(\"a\", \"a\", \"c\", \"d\", \"d\") last <- c(\"x144\", \"x255\", \"z3\", \"r4\", \"t5\") short_names(first, last) #> \"a_x144\" \"a_x255\" \"c\" \"d_r\" \"d_t\" first <- c(\"a\", \"a\", \"c\") last <- c(\"x1\", \"x1\", \"z3\") short_names(first, last) #> \"a_x1\" \"c\" #> Warning message: #> In ky_short_names(first, last) : #> First and Last pairs are not unique. Returning only unique combinations. }"}]
diff --git a/docs/sitemap.xml b/docs/sitemap.xml
index 7cfd15a..16abf1e 100644
--- a/docs/sitemap.xml
+++ b/docs/sitemap.xml
@@ -18,6 +18,9 @@
https://openscapes.github.io/kyber/articles/kyber.html
+
+ https://openscapes.github.io/kyber/articles/quick-cohort-setup.html
+
https://openscapes.github.io/kyber/authors.html
diff --git a/vignettes/github-repo.Rmd b/vignettes/github-repo.Rmd
index daaac57..1dc59ad 100644
--- a/vignettes/github-repo.Rmd
+++ b/vignettes/github-repo.Rmd
@@ -62,6 +62,4 @@ repo_name <- "2021-ilm-rotj"
repo_path <- init_repo(repo_name)
```
-
-
[cr]: https://docs.google.com/spreadsheets/d/1Ys9KiTXXmZ_laBoCV2QWEm7AcnGSVQaXvm2xpi4XTSc/edit#gid=695033382
\ No newline at end of file
diff --git a/vignettes/quick-cohort-setup.Rmd b/vignettes/quick-cohort-setup.Rmd
new file mode 100644
index 0000000..798af4b
--- /dev/null
+++ b/vignettes/quick-cohort-setup.Rmd
@@ -0,0 +1,199 @@
+---
+title: "Quick Start Guide"
+description: >
+ Learn how to create a cohort-specific GitHub repository with Kyber.
+output: rmarkdown::html_vignette
+vignette: >
+ %\VignetteIndexEntry{Creating a Cohort-Specific GitHub Repository with Kyber}
+ %\VignetteEngine{knitr::rmarkdown}
+ %\VignetteEncoding{UTF-8}
+---
+
+```{r, include = FALSE}
+knitr::opts_chunk$set(
+ collapse = TRUE,
+ comment = "#>"
+)
+```
+
+### Configuration
+
+Using Kyber requires more configuration than most R packages since Kyber
+functions automate processes on GitHub that you would normally do by hand.
+
+First, make sure that you have `googlesheets4` installed and that you have
+authorized your computer to read from Google Sheets. Run the following to
+test your configuration settings:
+
+``` r
+library(googlesheets4)
+
+cohort_registry_url <- "https://docs.google.com/spreadsheets/d/1Ys9KiTXXmZ_laBoCV2QWEm7AcnGSVQaXvm2xpi4XTSc/"
+
+read_sheet(cohort_registry_url, sheet = "test-sheet")
+```
+
+``` r
+library(usethis)
+library(gitcreds)
+
+create_github_token(
+ scopes = c("repo", "user", "gist", "workflow", "admin:org")
+)
+
+gitcreds_set()
+```
+
+## Example Workflow
+
+This workflow often happens in 4 separate stages:
+
+1. create the repo and readme (pre-cohort)
+2. create `github-clinic` files (days before GitHub Clinic in Call 2)
+3. create github team and add usernames (day before Clinic, when we
+ have all usernames)
+4. create agenda documents before each Cohort Call
+
+For creating the GitHub Team and adding usernames, Kyber requires you to
+set up a GitHub Personal Access Token with scopes for **repo** and
+**admin:org**. See the [GitHub PAT
+documentation](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token)
+for more information about how to generate your PAT. You can create your PAT with `usethis::create_github_token()` with their defaults, plus `admin:org`.
+Please make sure
+that you do not share your PAT or commit it to a Git repository, since
+anyone with your PAT can act as you on GitHub.
+
+### Create GitHub repo
+
+``` r
+library(kyber)
+library(rmarkdown)
+library(tibble)
+library(fs)
+
+repo_name <- "2021-ilm-rotj"
+
+# This will open a README.Rmd for you to edit
+repo_path <- create_repo(repo_name)
+
+# Then render the README.Rmd to README.md
+render(path(repo_path, "README.Rmd"))
+
+# We still need to work out the next part of the workflow and the extent to
+# which it should be automated, but I imagine something like:
+#
+# 1. Move README.Rmd out of this repository to another repository that perhaps
+# only contains README.Rmds.
+# 2. Git add, commit, and push in the repo that only contains README.Rmds.
+# 3. Git add, commit, and push in this repository.
+```
+
+### GitHub Clinic - Generate Markdown Files for Each Participant
+
+Clone the Cohort Repo to RStudio, then run the following code. Detailed instructions of what this looks like:
+
+1. Open RStudio, and create a new script (temporary, you'll deleted it but it's a nicer place to work)
+1. Copy the following into the script, then delete the examples "Erin, Julie". You'll keep the `_demo.md`, which is what you'll demo live.
+2. Go to the ParticipantsList, and copy the 2 first and last columns
+3. Back in RStudio, put your cursor inside the "tribble" parentheses, then, in the Addin menu in the top of RStudio, select "Paste as Tribble"!
+4. Then, double-check the column headers - they are likely not `first` and `last` as is written in the `kyber::short_names` call. The easiest thing is to update the column names in the `kyber::short_names` code before running (for example: `kyber::short_names(cohort$First.Name, cohort$Last.Name)`
+
+
+```
+library(stringr)
+library(datapasta) # install.packages("datapasta")
+library(kyber) ## remotes::install_github("openscapes/kyber")
+library(here)
+library(fs)
+
+## use `datapasta` addin to vector_tribble these names formatted from the spreadsheet!
+cohort <- c(tibble::tribble(
+ ~first, ~last,
+ "_demo", "",
+ "Erin", "Robinson",
+ "Julie", "Lowndes"
+ )
+)
+
+## create .md files for each Champion
+kyber::short_names(cohort$first, cohort$last) |>
+ create_github_clinic(here())
+
+## copy trailhead image into parent folder
+trailhead_png <- system.file("kyber-templates",
+ "horst-champions-trailhead.png", package = "kyber")
+fs::file_copy(trailhead_png, here())
+```
+
+You'll now have .md files for each participant in the cohort! Any duplicate names with have a `_LastInitial`. Check by clicking into the `github-clinic` folder and opening a file.
+
+**Now**, commit and push the Markdown files in the `github-clinic` folder plus the `horst-champions-trailhead.png in the top-level folder to GitHub.com. Don't push the .gitignore or .rproj since they're not relevant for the Clinic. (You can do Command-A to select all files and then unclick those 2 you don't want).
+
+
+### Create GitHub team, add usernames
+
+1. Open RStudio, and create a new script (temporary, you'll deleted it but it's a nicer place to work)
+1. Paste the following in it and review the code. You may already have a GitHub PAT set; there is more information at the top of the README about it.
+1. Run this code first as-is with the example usernames in the `members` variable to check -
+1. Check that the example usernames were added in the Cohort GitHub: go to github.com/openscapes/cohort-name > Settings > Collaborators and Teams
+1. If the team was created with the username and appears in the repo, woohoo!
+1. Open the ParticipantsList and copy the GitHub username column, including the header.
+3. In RStudio, put your cursor after `members <-` and use the `datapasta` Addin > Paste As Tribble to paste the usernames into the `members` variable, deleting the previous example user.
+2. After pasting in the R script, rename the header as "username" (no spaces or asterices)
+5. Run the following code again and check that everyone was added!
+6. Finally, in the ParticipantList, highlight all usernames we've added in green. This helps us know who else to add during the live clinic session.
+
+``` r
+## First make sure you have a GitHub PAT set. If you need one, here's what you'd do:
+# usethis::create_github_token() ## use their defaults plus `admin:org`
+# Sys.setenv(GITHUB_PAT = "ghp_0id4zkO4GqSuEsC6Zs22wf34Y0u3270")
+
+library(kyber)
+library(rmarkdown)
+library(tibble)
+library(fs)
+library(datapasta)
+
+## create naming for GitHub - do this once!
+repo_name <- "2022-nasa-champions"
+team_name <- paste0(repo_name, "-cohort")
+create_team(team_name, maintainers = "jules32", org = "openscapes")
+
+## create member variable - do this twice (first as test!)
+## this is where you'll use datapasta and run everything below
+members <- tibble::tribble(
+ ~username,
+ "eeholmes"
+ )
+
+add_team_members(team_name, members = members$username, org = "openscapes")
+add_repo_to_team(repo_name, team_name, org = "openscapes")
+```
+
+Yay! Now all to do is to highlight the usernames in green in the ParticpantList for our bookkeeping!
+
+
+### Agendas
+
+ kyber::call_agenda(
+ registry_url = "https://docs.google.com/spreadsheets/d/1Ys9KiTXXmZ_laBoCV2QWEm7AcnGSVQaXvm2xpi4XTSc/edit#gid=942365997",
+ cohort_id = "2022-nasa-champions",
+ call_number = 3)
+
+Then, to move this to a Google Doc and fine-tune formatting, follow these notes (as of July 14, 2022):
+
+- In RStudio, Knit (or PreviewHTML) the resulting `agenda.md` and copy-paste the result into a Google Doc (example: 03_CallAgenda [ 2022-noaa-afsc ]. You might need to to expand the knitted preview into the browser to get it to copy/paste correctly into Google Docs
+- Move Google Doc to Openscapes Workspace folder Openscapes_CohortCalls [ year-cohort-name ].
+- Select all (cmd-A) and change font to Open Sans
+- Make p1 opening text 9 point font (the text above horizontal line & Call title)
+- Make Header 1 font 18, bold; update heading 1 to match (see screenshot below; Stef notes "update heading to match" has not been working in these docs)
+- Make Header 2 font 14, bold; update heading 2 to match
+- Select all (cmd-A), then:
+ - "add space" then "remove space **after** paragraph" throughout to make spacing a little more cozy (yes seems odd to do and undo, but it works)
+ - "add space" then "remove space **before** paragraph" throughout to make spacing a little more cozy
+- Review doc and fix any further font weirdness
+- Add page numbers
+
+**How to "update heading 1 to match"**: (Stef notes this has not been working in these docs) In Google Doc, to update a text style (headings, normal text, with font type, size etc), highlight a section with the style you want, click the styles dropdown shown in the screenshot, and select e.g. "Update Heading 1 to match". Double check the doc because we've noticed it missed some in an agenda.
+
+![Screen Shot 2022-07-14 at 5 50 28 PM](https://user-images.githubusercontent.com/11927811/179125336-ec2fc1e5-792e-495d-8a29-c1ed3ec3cdc4.png)