vault: initial commit

This commit is contained in:
n9rcf579sh-ai 2026-03-15 04:30:15 +01:00
commit c0b1917400
37 changed files with 13524 additions and 0 deletions

BIN
.obsidian/.DS_Store vendored Normal file

Binary file not shown.

4
.obsidian/app.json vendored Normal file
View File

@ -0,0 +1,4 @@
{
"alwaysUpdateLinks": true,
"attachmentFolderPath": "Attachments"
}

4
.obsidian/appearance.json vendored Normal file
View File

@ -0,0 +1,4 @@
{
"cssTheme": "AnuPpuccin",
"theme": "moonstone"
}

16
.obsidian/bookmarks.json vendored Normal file
View File

@ -0,0 +1,16 @@
{
"items" : [
{
"title" : "BYE-BYE LinkedIn outreach...\n\nCLAUDE books 2-5 meetings\/day on AUTOPILOT.  \n\nFor years everyone's been using for LinkedIn compltely WRONG.\n\nManual: personalized messages BUT 3 hours\/day \nAutomated:… | Liam Mouhali | 1,686 comments",
"type" : "url",
"ctime" : 1773058103437,
"url" : "https:\/\/www.linkedin.com\/posts\/liam-mouhali_bye-bye-linkedin-outreach-claude-books-activity-7436521669315411968-D8wO?utm_source=share&utm_medium=member_ios&rcm=ACoAAAqO_xcBOtPyW54_UeqmFkI_5eobotzn5BY"
},
{
"url" : "https:\/\/www.linkedin.com\/posts\/ole-margraf_56-million-tons-of-co2-from-clothes-that-activity-7436682375272714240-14Ew?utm_source=share&utm_medium=member_ios&rcm=ACoAAAqO_xcBOtPyW54_UeqmFkI_5eobotzn5BY",
"title" : "5.6 million tons of CO2. From clothes that were never worn.\n\nThe EU just banned the destruction of unsold apparel, footwear, and clothing accessories. Large companies must comply by July 19, 2026… | Ole Margraf",
"ctime" : 1773058276605,
"type" : "url"
}
]
}

3
.obsidian/community-plugins.json vendored Normal file
View File

@ -0,0 +1,3 @@
[
"obsidian-git"
]

33
.obsidian/core-plugins.json vendored Normal file
View File

@ -0,0 +1,33 @@
{
"file-explorer": true,
"global-search": true,
"switcher": true,
"graph": true,
"backlink": true,
"canvas": true,
"outgoing-link": true,
"tag-pane": true,
"footnotes": false,
"properties": true,
"page-preview": true,
"daily-notes": true,
"templates": true,
"note-composer": true,
"command-palette": true,
"slash-command": false,
"editor-status": true,
"bookmarks": true,
"markdown-importer": false,
"zk-prefixer": false,
"random-note": false,
"outline": true,
"word-count": true,
"slides": false,
"audio-recorder": false,
"workspaces": false,
"file-recovery": true,
"publish": false,
"sync": true,
"bases": true,
"webviewer": false
}

4
.obsidian/daily-notes.json vendored Normal file
View File

@ -0,0 +1,4 @@
{
"format": "YYYY.MM.DD",
"folder": "Daily Notes"
}

22
.obsidian/graph.json vendored Normal file
View File

@ -0,0 +1,22 @@
{
"collapse-filter": true,
"search": "",
"showTags": false,
"showAttachments": false,
"hideUnresolved": false,
"showOrphans": true,
"collapse-color-groups": true,
"colorGroups": [],
"collapse-display": true,
"showArrow": false,
"textFadeMultiplier": 0,
"nodeSizeMultiplier": 1,
"lineSizeMultiplier": 1,
"collapse-forces": true,
"centerStrength": 0.518713248970312,
"repelStrength": 10,
"linkStrength": 1,
"linkDistance": 250,
"scale": 1,
"close": false
}

View File

@ -0,0 +1,68 @@
{
"commitMessage": "vault backup: {{date}}",
"autoCommitMessage": "vault backup: {{date}}",
"commitMessageScript": "",
"commitDateFormat": "YYYY-MM-DD HH:mm:ss",
"autoSaveInterval": 0,
"autoPushInterval": 0,
"autoPullInterval": 0,
"autoPullOnBoot": false,
"autoCommitOnlyStaged": false,
"disablePush": false,
"pullBeforePush": true,
"disablePopups": false,
"showErrorNotices": true,
"disablePopupsForNoChanges": false,
"listChangedFilesInMessageBody": false,
"showStatusBar": true,
"updateSubmodules": false,
"syncMethod": "merge",
"mergeStrategy": "none",
"customMessageOnAutoBackup": false,
"autoBackupAfterFileChange": false,
"treeStructure": false,
"refreshSourceControl": true,
"basePath": "Github-Obsidian",
"differentIntervalCommitAndPush": false,
"changedFilesInStatusBar": false,
"showedMobileNotice": true,
"refreshSourceControlTimer": 7000,
"showBranchStatusBar": true,
"setLastSaveToLastCommit": false,
"submoduleRecurseCheckout": false,
"gitDir": "",
"showFileMenu": true,
"authorInHistoryView": "hide",
"dateInHistoryView": false,
"diffStyle": "split",
"hunks": {
"showSigns": false,
"hunkCommands": false,
"statusBar": "disabled"
},
"lineAuthor": {
"show": false,
"followMovement": "inactive",
"authorDisplay": "initials",
"showCommitHash": false,
"dateTimeFormatOptions": "date",
"dateTimeFormatCustomString": "YYYY-MM-DD HH:mm",
"dateTimeTimezone": "viewer-local",
"coloringMaxAge": "1y",
"colorNew": {
"r": 255,
"g": 150,
"b": 150
},
"colorOld": {
"r": 120,
"g": 160,
"b": 255
},
"textColorCss": "var(--text-muted)",
"ignoreWhitespace": false,
"gutterSpacingFallbackLength": 5,
"lastShownAuthorDisplay": "initials",
"lastShownDateTimeFormatOptions": "date"
}
}

452
.obsidian/plugins/obsidian-git/main.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,10 @@
{
"author": "Vinzent",
"authorUrl": "https://github.com/Vinzent03",
"id": "obsidian-git",
"name": "Git",
"description": "Integrate Git version control with automatic backup and other advanced features.",
"isDesktopOnly": false,
"fundingUrl": "https://ko-fi.com/vinzent",
"version": "2.38.0"
}

View File

@ -0,0 +1,23 @@
#!/bin/sh
PROMPT="$1"
TEMP_FILE="$OBSIDIAN_GIT_CREDENTIALS_INPUT"
cleanup() {
rm -f "$TEMP_FILE" "$TEMP_FILE.response"
}
trap cleanup EXIT
echo "$PROMPT" > "$TEMP_FILE"
while [ ! -e "$TEMP_FILE.response" ]; do
if [ ! -e "$TEMP_FILE" ]; then
echo "Trigger file got removed: Abort" >&2
exit 1
fi
sleep 0.1
done
RESPONSE=$(cat "$TEMP_FILE.response")
echo "$RESPONSE"

View File

@ -0,0 +1,710 @@
@keyframes loading {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
.git-signs-gutter {
.cm-gutterElement {
/* Needed to align the sign properly for different line heigts. Such as
* when having a heading or list item.
*/
padding-top: 0 !important;
}
}
.workspace-leaf-content[data-type="git-view"] .button-border {
border: 2px solid var(--interactive-accent);
border-radius: var(--radius-s);
}
.workspace-leaf-content[data-type="git-view"] .view-content {
padding-left: 0;
padding-top: 0;
padding-right: 0;
}
.workspace-leaf-content[data-type="git-history-view"] .view-content {
padding-left: 0;
padding-top: 0;
padding-right: 0;
}
.loading {
overflow: hidden;
}
.loading > svg {
animation: 2s linear infinite loading;
transform-origin: 50% 50%;
display: inline-block;
}
.obsidian-git-center {
margin: auto;
text-align: center;
width: 50%;
}
.obsidian-git-textarea {
display: block;
margin-left: auto;
margin-right: auto;
}
.obsidian-git-disabled {
opacity: 0.5;
}
.obsidian-git-center-button {
display: block;
margin: 20px auto;
}
.tooltip.mod-left {
overflow-wrap: break-word;
}
.tooltip.mod-right {
overflow-wrap: break-word;
}
/* Limits the scrollbar to the view body */
.git-view {
display: flex;
flex-direction: column;
position: relative;
height: 100%;
}
/* Re-enable wrapping of nav buttns to prevent overflow on smaller screens #*/
.workspace-drawer .git-view .nav-buttons-container {
flex-wrap: wrap;
}
.git-tools {
display: flex;
margin-left: auto;
}
.git-tools .type {
padding-left: var(--size-2-1);
display: flex;
align-items: center;
justify-content: center;
width: 11px;
}
.git-tools .type[data-type="M"] {
color: orange;
}
.git-tools .type[data-type="D"] {
color: red;
}
.git-tools .buttons {
display: flex;
}
.git-tools .buttons > * {
padding: 0 0;
height: auto;
}
.workspace-leaf-content[data-type="git-view"] .tree-item-self,
.workspace-leaf-content[data-type="git-history-view"] .tree-item-self {
align-items: center;
}
.workspace-leaf-content[data-type="git-view"]
.tree-item-self:hover
.clickable-icon,
.workspace-leaf-content[data-type="git-history-view"]
.tree-item-self:hover
.clickable-icon {
color: var(--icon-color-hover);
}
/* Highlight an item as active if it's diff is currently opened */
.is-active .git-tools .buttons > * {
color: var(--nav-item-color-active);
}
.git-author {
color: var(--text-accent);
}
.git-date {
color: var(--text-accent);
}
.git-ref {
color: var(--text-accent);
}
/* ====== diff2html ======
The following styles are adapted from the obsidian-version-history plugin by
@kometenstaub https://github.com/kometenstaub/obsidian-version-history-diff/blob/main/src/styles.scss
which itself is adapted from the diff2html library with the following original license:
https://github.com/rtfpessoa/diff2html/blob/master/LICENSE.md
Copyright 2014-2016 Rodrigo Fernandes https://rtfpessoa.github.io/
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit
persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
.theme-dark,
.theme-light {
--git-delete-bg: #ff475040;
--git-delete-hl: #96050a75;
--git-insert-bg: #68d36840;
--git-insert-hl: #23c02350;
--git-change-bg: #ffd55840;
--git-selected: #3572b0;
--git-delete: #c33;
--git-insert: #399839;
--git-change: #d0b44c;
--git-move: #3572b0;
}
.git-diff {
.d2h-d-none {
display: none;
}
.d2h-wrapper {
text-align: left;
border-radius: 0.25em;
overflow: auto;
}
.d2h-file-header.d2h-file-header {
background-color: var(--background-secondary);
border-bottom: 1px solid var(--background-modifier-border);
font-family:
Source Sans Pro,
Helvetica Neue,
Helvetica,
Arial,
sans-serif;
height: 35px;
padding: 5px 10px;
}
.d2h-file-header,
.d2h-file-stats {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
}
.d2h-file-header {
display: none;
}
.d2h-file-stats {
font-size: 14px;
margin-left: auto;
}
.d2h-lines-added {
border: 1px solid var(--color-green);
border-radius: 5px 0 0 5px;
color: var(--color-green);
padding: 2px;
text-align: right;
vertical-align: middle;
}
.d2h-lines-deleted {
border: 1px solid var(--color-red);
border-radius: 0 5px 5px 0;
color: var(--color-red);
margin-left: 1px;
padding: 2px;
text-align: left;
vertical-align: middle;
}
.d2h-file-name-wrapper {
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
font-size: 15px;
width: 100%;
}
.d2h-file-name {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
color: var(--text-normal);
font-size: var(--h5-size);
}
.d2h-file-wrapper {
border: 1px solid var(--background-secondary-alt);
border-radius: 3px;
margin-bottom: 1em;
max-height: 100%;
}
.d2h-file-collapse {
-webkit-box-pack: end;
-ms-flex-pack: end;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
border: 1px solid var(--background-secondary-alt);
border-radius: 3px;
cursor: pointer;
display: none;
font-size: 12px;
justify-content: flex-end;
padding: 4px 8px;
}
.d2h-file-collapse.d2h-selected {
background-color: var(--git-selected);
}
.d2h-file-collapse-input {
margin: 0 4px 0 0;
}
.d2h-diff-table {
border-collapse: collapse;
font-family: var(--font-monospace);
font-size: var(--code-size);
width: 100%;
}
.d2h-files-diff {
width: 100%;
}
.d2h-file-diff {
/*
overflow-y: scroll;
*/
border-radius: 5px;
font-size: var(--font-text-size);
line-height: var(--line-height-normal);
}
.d2h-file-side-diff {
display: inline-block;
margin-bottom: -8px;
margin-right: -4px;
overflow-x: scroll;
overflow-y: hidden;
width: 50%;
}
.d2h-code-line {
padding-left: 6em;
padding-right: 1.5em;
}
.d2h-code-line,
.d2h-code-side-line {
display: inline-block;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
white-space: nowrap;
width: 100%;
}
.d2h-code-side-line {
/* needed to be changed */
padding-left: 0.5em;
padding-right: 0.5em;
}
.d2h-code-line-ctn {
word-wrap: normal;
background: none;
display: inline-block;
padding: 0;
-webkit-user-select: text;
-moz-user-select: text;
-ms-user-select: text;
user-select: text;
vertical-align: middle;
width: 100%;
/* only works for line-by-line */
white-space: pre-wrap;
}
.d2h-code-line del,
.d2h-code-side-line del {
background-color: var(--git-delete-hl);
color: var(--text-normal);
}
.d2h-code-line del,
.d2h-code-line ins,
.d2h-code-side-line del,
.d2h-code-side-line ins {
border-radius: 0.2em;
display: inline-block;
margin-top: -1px;
text-decoration: none;
vertical-align: middle;
}
.d2h-code-line ins,
.d2h-code-side-line ins {
background-color: var(--git-insert-hl);
text-align: left;
}
.d2h-code-line-prefix {
word-wrap: normal;
background: none;
display: inline;
padding: 0;
white-space: pre;
}
.line-num1 {
float: left;
}
.line-num1,
.line-num2 {
-webkit-box-sizing: border-box;
box-sizing: border-box;
overflow: hidden;
/*
padding: 0 0.5em;
*/
text-overflow: ellipsis;
width: 2.5em;
padding-left: 0;
}
.line-num2 {
float: right;
}
.d2h-code-linenumber {
background-color: var(--background-primary);
border: solid var(--background-modifier-border);
border-width: 0 1px;
-webkit-box-sizing: border-box;
box-sizing: border-box;
color: var(--text-faint);
cursor: pointer;
display: inline-block;
position: absolute;
text-align: right;
width: 5.5em;
}
.d2h-code-linenumber:after {
content: "\200b";
}
.d2h-code-side-linenumber {
background-color: var(--background-primary);
border: solid var(--background-modifier-border);
border-width: 0 1px;
-webkit-box-sizing: border-box;
box-sizing: border-box;
color: var(--text-faint);
cursor: pointer;
overflow: hidden;
padding: 0 0.5em;
text-align: right;
text-overflow: ellipsis;
width: 4em;
/* needed to be changed */
display: table-cell;
position: relative;
}
.d2h-code-side-linenumber:after {
content: "\200b";
}
.d2h-code-side-emptyplaceholder,
.d2h-emptyplaceholder {
background-color: var(--background-primary);
border-color: var(--background-modifier-border);
}
.d2h-code-line-prefix,
.d2h-code-linenumber,
.d2h-code-side-linenumber,
.d2h-emptyplaceholder {
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.d2h-code-linenumber,
.d2h-code-side-linenumber {
direction: rtl;
}
.d2h-del {
background-color: var(--git-delete-bg);
border-color: var(--git-delete-hl);
}
.d2h-ins {
background-color: var(--git-insert-bg);
border-color: var(--git-insert-hl);
}
.d2h-info {
background-color: var(--background-primary);
border-color: var(--background-modifier-border);
color: var(--text-faint);
}
.d2h-del,
.d2h-ins,
.d2h-file-diff .d2h-change {
color: var(--text-normal);
}
.d2h-file-diff .d2h-del.d2h-change {
background-color: var(--git-change-bg);
}
.d2h-file-diff .d2h-ins.d2h-change {
background-color: var(--git-insert-bg);
}
.d2h-file-list-wrapper {
a {
text-decoration: none;
cursor: default;
-webkit-user-drag: none;
}
svg {
display: none;
}
}
.d2h-file-list-header {
text-align: left;
}
.d2h-file-list-title {
display: none;
}
.d2h-file-list-line {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
text-align: left;
}
.d2h-file-list {
}
.d2h-file-list > li {
border-bottom: 1px solid var(--background-modifier-border);
margin: 0;
padding: 5px 10px;
}
.d2h-file-list > li:last-child {
border-bottom: none;
}
.d2h-file-switch {
cursor: pointer;
display: none;
font-size: 10px;
}
.d2h-icon {
fill: currentColor;
margin-right: 10px;
vertical-align: middle;
}
.d2h-deleted {
color: var(--git-delete);
}
.d2h-added {
color: var(--git-insert);
}
.d2h-changed {
color: var(--git-change);
}
.d2h-moved {
color: var(--git-move);
}
.d2h-tag {
background-color: var(--background-secondary);
display: -webkit-box;
display: -ms-flexbox;
display: flex;
font-size: 10px;
margin-left: 5px;
padding: 0 2px;
}
.d2h-deleted-tag {
border: 1px solid var(--git-delete);
}
.d2h-added-tag {
border: 1px solid var(--git-insert);
}
.d2h-changed-tag {
border: 1px solid var(--git-change);
}
.d2h-moved-tag {
border: 1px solid var(--git-move);
}
/* needed for line-by-line*/
.d2h-diff-tbody {
position: relative;
}
}
/* ====================== Line Authoring Information ====================== */
.cm-gutterElement.obs-git-blame-gutter {
/* Add background color to spacing inbetween and around the gutter for better aesthetics */
border-width: 0px 2px 0.2px 2px;
border-style: solid;
border-color: var(--background-secondary);
background-color: var(--background-secondary);
}
.cm-gutterElement.obs-git-blame-gutter > div,
.line-author-settings-preview {
/* delegate text color to settings */
color: var(--obs-git-gutter-text);
font-family: monospace;
height: 100%; /* ensure, that age-based background color occupies entire parent */
text-align: right;
padding: 0px 6px 0px 6px;
white-space: pre; /* Keep spaces and do not collapse them. */
}
@media (max-width: 800px) {
/* hide git blame gutter not to superpose text */
.cm-gutterElement.obs-git-blame-gutter {
display: none;
}
}
.git-unified-diff-view,
.git-split-diff-view .cm-deletedLine .cm-changedText {
background-color: #ee443330;
}
.git-unified-diff-view,
.git-split-diff-view .cm-insertedLine .cm-changedText {
background-color: #22bb2230;
}
.git-obscure-prompt[git-is-obscured="true"] #git-show-password:after {
-webkit-mask-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon lucide-eye"><path d="M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0"></path><circle cx="12" cy="12" r="3"></circle></svg>');
}
.git-obscure-prompt[git-is-obscured="false"] #git-show-password:after {
-webkit-mask-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon lucide-eye-off"><path d="M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49"></path><path d="M14.084 14.158a3 3 0 0 1-4.242-4.242"></path><path d="M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143"></path><path d="m2 2 20 20"></path></svg>');
}
/* Override styling of Codemirror merge view "collapsed lines" indicator */
.git-split-diff-view .ͼ2 .cm-collapsedLines {
background: var(--interactive-normal);
border-radius: var(--radius-m);
color: var(--text-accent);
font-size: var(--font-small);
padding: var(--size-4-1) var(--size-4-1);
}
.git-split-diff-view .ͼ2 .cm-collapsedLines:hover {
background: var(--interactive-hover);
color: var(--text-accent-hover);
}
.git-signs-gutter {
.cm-gutterElement {
display: grid;
}
}
.git-gutter-marker:hover {
border-radius: 2px;
}
.git-gutter-marker.git-add {
background-color: var(--color-green);
justify-self: center;
height: inherit;
width: 0.2rem;
}
.git-gutter-marker.git-change {
background-color: var(--color-yellow);
justify-self: center;
height: inherit;
width: 0.2rem;
}
.git-gutter-marker.git-changedelete {
color: var(--color-yellow);
font-weight: var(--font-bold);
font-size: 1rem;
justify-self: center;
height: inherit;
}
.git-gutter-marker.git-delete {
background-color: var(--color-red);
height: 0.2rem;
width: 0.8rem;
align-self: end;
}
.git-gutter-marker.git-topdelete {
background-color: var(--color-red);
height: 0.2rem;
width: 0.8rem;
align-self: start;
}
div:hover > .git-gutter-marker.git-change {
width: 0.6rem;
}
div:hover > .git-gutter-marker.git-add {
width: 0.6rem;
}
div:hover > .git-gutter-marker.git-delete {
height: 0.6rem;
}
div:hover > .git-gutter-marker.git-topdelete {
height: 0.6rem;
}
div:hover > .git-gutter-marker.git-changedelete {
font-weight: var(--font-bold);
}
.git-gutter-marker.staged {
opacity: 0.5;
}
.git-diff {
.cm-merge-revert {
width: 4em;
}
/* Ensure that merge revert markers are positioned correctly */
.cm-merge-revert > * {
position: absolute;
background-color: var(--background-secondary);
display: flex;
}
}
/* Prevent shifting of the editor when git signs gutter is the only gutter present */
.cm-gutters.cm-gutters-before:has(> .git-signs-gutter:only-child) {
margin-inline-end: 0;
.git-signs-gutter {
margin-inline-start: -1rem;
}
}
.git-changes-status-bar-colored {
.git-add {
color: var(--color-green);
}
.git-change {
color: var(--color-yellow);
}
.git-delete {
color: var(--color-red);
}
}
.git-changes-status-bar .git-add {
margin-right: 0.3em;
}
.git-changes-status-bar .git-change {
margin-right: 0.3em;
}

3
.obsidian/templates.json vendored Normal file
View File

@ -0,0 +1,3 @@
{
"folder": "Templates"
}

View File

@ -0,0 +1,7 @@
{
"name": "AnuPpuccin",
"version": "1.5.0",
"minAppVersion": "1.6.0",
"author": "Anubis",
"authorUrl": "https://github.com/AnubisNekhet"
}

9080
.obsidian/themes/AnuPpuccin/theme.css vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,8 @@
{
"name": "Minimal",
"version": "8.1.6",
"minAppVersion": "1.9.0",
"author": "@kepano",
"authorUrl": "https://twitter.com/kepano",
"fundingUrl": "https://www.buymeacoffee.com/kepano"
}

2246
.obsidian/themes/Minimal/theme.css vendored Normal file

File diff suppressed because one or more lines are too long

217
.obsidian/workspace-mobile.json vendored Normal file
View File

@ -0,0 +1,217 @@
{
"main": {
"id": "e49674ebcef2bf83",
"type": "split",
"children": [
{
"id": "861618413c29d627",
"type": "tabs",
"children": [
{
"id": "e320cbd37915e2dd",
"type": "leaf",
"state": {
"type": "empty",
"state": {},
"icon": "lucide-file",
"title": "New tab"
}
},
{
"id": "44c9944eddf88149",
"type": "leaf",
"pinned": true,
"state": {
"type": "markdown",
"state": {
"file": "Home.md",
"mode": "preview",
"source": false
},
"pinned": true,
"icon": "lucide-file",
"title": "Home"
}
},
{
"id": "acac966b212bc903",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "Untitled.md",
"mode": "source",
"source": false
},
"icon": "lucide-file",
"title": "Untitled"
}
},
{
"id": "2842b0712586f025",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "Knowledge Vault/LinkedIn Posts/BREAKING Meta just acquired Moltbook, and not a single VC made any money.\n\nLet that sink in.\n\nHere's what just happened\n\n→ Two guys vibe code a Reddit for AI agents.\n→ The founder literally says \"I… | David Azaraf | 10 comments.md",
"mode": "source",
"source": false
},
"icon": "lucide-file",
"title": "BREAKING Meta just acquired Moltbook, and not a single VC made any money.\n\nLet that sink in.\n\nHere's what just happened\n\n→ Two guys vibe code a Reddit for AI agents.\n→ The founder literally says \"I… | David Azaraf | 10 comments"
}
}
],
"currentTab": 3
}
],
"direction": "vertical"
},
"left": {
"id": "356a75478c3758a1",
"type": "mobile-drawer",
"children": [
{
"id": "b62827fce1fb9d07",
"type": "leaf",
"state": {
"type": "file-explorer",
"state": {
"sortOrder": "alphabetical",
"autoReveal": false
},
"icon": "lucide-folder-closed",
"title": "Files"
}
},
{
"id": "b56d88cdb2940693",
"type": "leaf",
"state": {
"type": "search",
"state": {
"query": "",
"matchingCase": false,
"explainSearch": false,
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical"
},
"icon": "lucide-search",
"title": "Search"
}
},
{
"id": "4411ff4fa49949ab",
"type": "leaf",
"state": {
"type": "tag",
"state": {
"sortOrder": "frequency",
"useHierarchy": true,
"showSearch": false,
"searchQuery": ""
},
"icon": "lucide-tags",
"title": "Tags"
}
},
{
"id": "fea594b9ce8ef8ed",
"type": "leaf",
"state": {
"type": "all-properties",
"state": {
"sortOrder": "frequency",
"showSearch": false,
"searchQuery": ""
},
"icon": "lucide-archive",
"title": "All properties"
}
},
{
"id": "3b2d2dc8a8b9d96f",
"type": "leaf",
"state": {
"type": "bookmarks",
"state": {},
"icon": "lucide-bookmark",
"title": "Bookmarks"
}
}
],
"currentTab": 0
},
"right": {
"id": "0fe3289975fd1e2e",
"type": "mobile-drawer",
"children": [
{
"id": "1aa439b933d9e4cc",
"type": "leaf",
"state": {
"type": "backlink",
"state": {
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical",
"showSearch": false,
"searchQuery": "",
"backlinkCollapsed": false,
"unlinkedCollapsed": true
},
"icon": "links-coming-in",
"title": "Backlinks"
}
},
{
"id": "2ad7439a2ceb258a",
"type": "leaf",
"state": {
"type": "outgoing-link",
"state": {
"linksCollapsed": false,
"unlinkedCollapsed": true
},
"icon": "links-going-out",
"title": "Outgoing links"
}
},
{
"id": "abf41c496f4e0b97",
"type": "leaf",
"state": {
"type": "outline",
"state": {
"followCursor": false,
"showSearch": false,
"searchQuery": ""
},
"icon": "lucide-list",
"title": "Outline"
}
}
],
"currentTab": 0
},
"left-ribbon": {
"hiddenItems": {
"switcher:Open quick switcher": false,
"graph:Open graph view": false,
"canvas:Create new canvas": false,
"daily-notes:Open today's daily note": false,
"templates:Insert template": false,
"command-palette:Open command palette": false,
"bases:Create new base": false
}
},
"active": "2842b0712586f025",
"lastOpenFiles": [
"Untitled 1.md",
"Untitled.md",
"Home.md",
"Templates/Meeting Template.md",
"Test Note.md"
]
}

214
.obsidian/workspace.json vendored Normal file
View File

@ -0,0 +1,214 @@
{
"main": {
"id": "bd85dd2c8bca159b",
"type": "split",
"children": [
{
"id": "27d1b715eaf22257",
"type": "tabs",
"children": [
{
"id": "99191ff68c37437e",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "Github-Obsidian/02 - Tech Projects/Coding Projects/2026.03.Apple Reminders → Notion Sync Documentation.md",
"mode": "source",
"source": false
},
"icon": "lucide-file",
"title": "2026.03.Apple Reminders → Notion Sync Documentation"
}
}
]
}
],
"direction": "vertical"
},
"left": {
"id": "6613216a7789f4f4",
"type": "split",
"children": [
{
"id": "407822473bc4220b",
"type": "tabs",
"children": [
{
"id": "e1ecfc49e2a8c06f",
"type": "leaf",
"state": {
"type": "file-explorer",
"state": {
"sortOrder": "alphabetical",
"autoReveal": false
},
"icon": "lucide-folder-closed",
"title": "Files"
}
},
{
"id": "75ec881208074b7b",
"type": "leaf",
"state": {
"type": "search",
"state": {
"query": "",
"matchingCase": false,
"explainSearch": false,
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical"
},
"icon": "lucide-search",
"title": "Search"
}
},
{
"id": "7b3516ac8f12a81f",
"type": "leaf",
"state": {
"type": "bookmarks",
"state": {},
"icon": "lucide-bookmark",
"title": "Bookmarks"
}
}
]
}
],
"direction": "horizontal",
"width": 300
},
"right": {
"id": "aef3c7596c87d153",
"type": "split",
"children": [
{
"id": "4f88871760cd21d8",
"type": "tabs",
"children": [
{
"id": "c2642b47a4d88bde",
"type": "leaf",
"state": {
"type": "backlink",
"state": {
"file": "Templates/Reddit Template.md",
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical",
"showSearch": false,
"searchQuery": "",
"backlinkCollapsed": false,
"unlinkedCollapsed": true
},
"icon": "links-coming-in",
"title": "Backlinks for Reddit Template"
}
},
{
"id": "e67ebde242974e48",
"type": "leaf",
"state": {
"type": "outgoing-link",
"state": {
"file": "Templates/Reddit Template.md",
"linksCollapsed": false,
"unlinkedCollapsed": true
},
"icon": "links-going-out",
"title": "Outgoing links from Reddit Template"
}
},
{
"id": "9e0483db786c8f11",
"type": "leaf",
"state": {
"type": "tag",
"state": {
"sortOrder": "frequency",
"useHierarchy": true,
"showSearch": false,
"searchQuery": ""
},
"icon": "lucide-tags",
"title": "Tags"
}
},
{
"id": "5c284018cd1c5ca0",
"type": "leaf",
"state": {
"type": "all-properties",
"state": {
"sortOrder": "frequency",
"showSearch": false,
"searchQuery": ""
},
"icon": "lucide-archive",
"title": "All properties"
}
},
{
"id": "fcf87c0608dd36fe",
"type": "leaf",
"state": {
"type": "outline",
"state": {
"file": "Templates/Reddit Template.md",
"followCursor": false,
"showSearch": false,
"searchQuery": ""
},
"icon": "lucide-list",
"title": "Outline of Reddit Template"
}
}
]
}
],
"direction": "horizontal",
"width": 300,
"collapsed": true
},
"left-ribbon": {
"hiddenItems": {
"switcher:Open quick switcher": false,
"graph:Open graph view": false,
"canvas:Create new canvas": false,
"daily-notes:Open today's daily note": false,
"templates:Insert template": false,
"command-palette:Open command palette": false,
"bases:Create new base": false,
"obsidian-git:Open Git source control": false
}
},
"active": "e1ecfc49e2a8c06f",
"lastOpenFiles": [
"Github-Obsidian/03 - Knowledge/📒 Notes",
"Github-Obsidian/03 - Knowledge/📤 Published",
"Github-Obsidian/03 - Knowledge/📥 Inbox",
"Github-Obsidian/02 - Tech Projects/Lawyer and Council",
"Home.md",
"Github-Obsidian/02 - Tech Projects/Agents",
"Github-Obsidian/02 - Tech Projects/Daily Summaries",
"Github-Obsidian/02 - Tech Projects/Coding Projects",
"Github-Obsidian/02 - Tech Projects/Coding Projects/2026.03.Apple Reminders → Notion Sync Documentation.md",
"Github-Obsidian",
"Github-Obsidian/00 - Daily Notes/2026-03-10.md",
"Untitled 1.md",
"Untitled.md",
"Github-Obsidian/Templates/Meeting Template.md",
"Github-Obsidian/Templates/Daily Note.md",
"Github-Obsidian/03 - Knowledge/📥 Inbox/LinkedIn Posts/BREAKING Meta just acquired Moltbook, and not a single VC made any money.\n\nLet that sink in.\n\nHere's what just happened\n\n→ Two guys vibe code a Reddit for AI agents.\n→ The founder literally says \"I… | David Azaraf | 10 comments.md",
"Github-Obsidian/02 - Tech Projects",
"Templates/Untitledz.md",
"Github-Obsidian/00 - Daily Notes",
"Github-Obsidian/03 - Knowledge/📥 Inbox/Youtube/How I Use Obsidian + Claude Code to Run My Life.md",
"Reddit Posts",
"Github-Obsidian/Templates/Reddit Template.md",
"Knowledge Vault/Untitled.md",
"Test Note.md"
]
}

View File

@ -0,0 +1,12 @@
Todays goals:
- make progress on my tech projects
- I want to get the Automation working
- I want to figure out how to make an Obsidian Vault
- Steuererklärung for 2025
this is the first note I'm making with Obsidian. I'm really curious how I can build this into my knowledge base and use it for working with LLMs. I want to use it as my thinking partner, and my goal will be to start taking some daily notes to reflect on one of my goals: how am I progressing, and other things that are happening in my life.
Right now, I'm working on some tech projects that have to do with automations such as OpenClaw, N8N, and Zapier. What I'm trying to work towards is to develop a hands-free way of handling all of my calendar emails and other administrative tasks.
How I would like to do this is to build it into an Apple ecosystem using an Apple Watch and my iPhone and using Notion as the main command centre. So Obsidian is just going to be my note-taking app and thinking partner

0
01 - Meetings/.gitkeep Normal file
View File

View File

View File

@ -0,0 +1,209 @@
Project Summary & Learnings  |  March 2026
# What We Built
A one-way automation that syncs incomplete tasks from Apple Reminders ("To Do" list) to a Notion database, with deduplication to prevent duplicate entries.
## Final Architecture
Reminders app closed
  → Shortcuts automation triggers
     → Scriptable script runs (EventKit)
        → Fetches all incomplete tasks from "To Do" list
           → POST to n8n webhook
              → Code node parses + structures tasks
                 → For each task:
                    → Query Notion by iCloud UID
                    → If not found → Create Notion page
                    → If found → Skip (no duplicate)
## Data Flow Per Task
- UID (unique identifier from EventKit)
- Title
- Due date (ISO 8601 format)
- Notes
- Status → hardcoded as "To Do" on creation
## Completion Sync (Reminders → Notion)
A second Scriptable script checks for tasks completed in the last 24 hours and updates their Notion status to "Done" via a separate n8n code node routing on action: "complete".
# Approaches Tried
## Option A — iCloud CalDAV Polling (abandoned)
The original plan was to poll iCloud's CalDAV server from n8n every 5 minutes. This is reliable and device-independent but hit a hard wall:
- Apple migrated modern Reminders lists to CloudKit (iOS 13+)
- CalDAV only exposes legacy lists — flagged as "Reminders ⚠️" in the calendar listing
- Custom lists like "To Do" created in the modern format are completely invisible to CalDAV
- No workaround exists — this is an Apple architectural decision
## Option B — Apple Shortcuts + n8n Webhook (partial)
Shortcuts has native access to modern Reminders but hit several limitations:
- No "when reminder is added" automation trigger exists in iOS
- Shortcuts bundles list variables into one concatenated string instead of firing per item
- Workarounds (Text actions, Set Variable, loop structures) all produced the same bundling behaviour
- Date + title pairing by index breaks when tasks have no due date — lists become misaligned
## Option C — Scriptable + EventKit (final solution)
Scriptable is a free iOS app that exposes native iPhone APIs including EventKit. Writing ~20 lines of JavaScript gave full programmatic access to Reminders with:
- Correct title per task
- ISO 8601 due date per task (null if not set)
- Unique identifier per task (essential for deduplication)
- Notes per task
Triggered via Shortcuts automation on Reminders app close.
# Technical Learnings
## Apple / iOS
- Modern Reminders (iOS 13+) use CloudKit — NOT CalDAV. CalDAV only works for legacy unconverted lists.
- Shortcuts cannot trigger on "reminder added" — only on app open/close or time-based.
- Shortcuts visual variable system is unreliable for extracting typed properties from list objects — it bundles values instead of iterating correctly.
- Scriptable + EventKit is the correct tool for programmatic Reminders access on iOS.
- EventKit's Reminder.allIncomplete([list]) returns full objects with all properties including identifier, dueDate, notes, completionDate.
## n8n
- n8n Cloud 2.9.4 Code nodes do not support $http, fetch, or this.getCredentials() — use helpers.httpRequest() instead.
- helpers.httpRequest() auto-parses JSON responses — do not wrap in JSON.parse().
- Test webhook URL (webhook-test/) only stays open for one call after clicking Execute Workflow — use production URL + activate toggle for persistent workflows.
- Notion node with 0 results outputs nothing downstream — IF nodes cannot branch on empty. Use a Code node with direct API calls to handle both search and create in one step.
- Custom HTTP methods like REPORT and PROPFIND are not available in the HTTP Request node dropdown — use a Code node with helpers.httpRequest() instead.
## Notion API
- Deduplication requires storing the source system's UID (iCloud UID) as a rich_text property in Notion.
- Status fields use { status: { name: "To Do" } } format — not select or text.
- Date fields require ISO 8601 format: { date: { start: "2026-03-10T00:00:00.000Z" } }.
- Integration must be explicitly connected to each database via Connections in Notion UI — otherwise API returns 401.
# Final Stack
- Reminders access: Scriptable (iOS)
- Automation trigger: Apple Shortcuts
- Workflow engine: n8n Cloud 2.9.4
- Task database: Notion API (2022-06-28)
# Future Extensions
- Notion → Reminders bidirectional sync (requires n8n polling + push notification trigger e.g. ntfy.sh or Pushover)
- Optimise to only sync tasks created/modified since last run (store last sync timestamp)
- Migrate to self-hosted n8n on Hetzner VPS (~€5/month) — migration is a half-day job: export JSON, re-authenticate credentials, update webhook URLs
- Add error handling and Slack/email alerts for failed syncs
Key credentials & config
n8n webhook: https://weisstrevor.app.n8n.cloud/webhook/c68fdc4a-0e56-4ae2-8c5f-14e339846cbe
Notion DB: 2872f572ad7d8089beb4f24380180a12
iCloud CalDAV: p25-caldav.icloud.com / Apple ID: 2004413068

View File

View File

View File

@ -0,0 +1,8 @@
[BREAKING: Meta just acquired Moltbook, and not a single VC made any money.
Let that sink in.
Here's what just happened:
→ Two guys vibe code a Reddit for AI agents.
→ The founder literally says "I… | David Azaraf | 10 comments](https://www.linkedin.com/posts/david-azaraf_breaking-meta-just-acquired-moltbook-and-activity-7437427433307521024-qOdU?utm_source=share&utm_medium=member_ios&rcm=ACoAAAqO_xcBOtPyW54_UeqmFkI_5eobotzn5BY)

View File

@ -0,0 +1,68 @@
---
description: "Really inspiring video about how i could incorporate obsidian in my life. I want to start reflecting more"
---
![](https://www.youtube.com/watch?v=6MBq1paspVU)
I sit down with my dear friend Vin (Internet Vin) for a deep, hands-on walkthrough of how he uses Obsidian and Claude Code together as a thinking partner, idea generator, and personal operating system. Vin demonstrates live how Claude Code can read, reference, and surface patterns across an entire Obsidian vault of interlinked markdown files — turning years of personal notes into actionable insights, project ideas, and even custom commands. This episode covers everything from the basic setup to advanced workflows like tracing how ideas evolve over time, generating contextual startup ideas, and delegating tasks to autonomous agents. If you are serious about getting the most out of LLMs, this is the episode that shows you how your own writing becomes the fuel.
Link to Vin's skills and my notes: https://startup-ideas-pod.link/obsidian-commands
Timestamps
00:00 Intro
02:10 What Is Claude Code?
06:45 What Is Obsidian?
10:28 Obsidian CLI: Giving Claude Code Access to Your Vault
14:53 Thinking Tools: Ghost, Challenge, Emerge, Drift, Ideas, Trace
22:51 The Role of Reflection in Building a Powerful Vault
25:15 How This Relates to OpenClaw (Autonomous Agents)
29:13 Live Demo: /Connect — Bridging Two Domains
31:25 Meeting Notes & External Info
33:23 Why Vin Keeps a Strict Separation: Human-Written vs. Agent-Written
35:42 How Claude Code uses Obsidian
41:46 Live Demo: /Ideas — Generating Actionable Ideas from Your Vault
47:10 The /Graduate Command
50:29 Why Obsidian Is the Missing Link for AI Companies
54:53 The Alpha: Why 99.99% of People Won't Do This
57:38 Closing Thoughts & Where to Follow Vin
Key Points
\* Claude Code is a command-line agent that can control your computer through natural language — and its power multiplies when you feed it rich, persistent context files instead of re-explaining projects every session.
\* Obsidian is uniquely valuable because it sits on top of interlinked markdown files; the new Obsidian CLI lets Claude Code see both the files and the relationships between them.
\* Vin built custom slash commands (/trace, /connect, /ideas, /ghost, /drift, /challenge) that let him use Claude Code as a thinking partner — surfacing latent patterns, contradictions, and ideas he would never see on his own.
\* Writing and daily reflection are the engine of the entire system: the more you write, the more context the agent has, and the more it can do for you.
\* Markdown files are the real oxygen of LLMs; if you are serious about building a personal OS with AI, a centralized note-taking tool built on markdown is foundational
Numbered Section Summaries
1\. Obsidian as an Interlinked Knowledge Base
Vin introduces Obsidian as an interface that sits on top of a folder of markdown files, with the critical addition of backlinks — connections between files that mirror how the brain forms associations. He walks through his own vault, showing how daily notes, project files, and notes on people all link together in a visual graph.
2\. Obsidian CLI: The Bridge Between Your Vault and Claude Code
The real breakthrough comes from Obsidian CLI, which gives Claude Code access to both the files and their interrelationships. This means the agent can see that a note about filmmaking is connected to a note about world building, and can surface cross-domain patterns you have been circling for months without realizing it.
3\. Custom Slash Commands as Thinking Tools
Vin demonstrates a suite of custom commands he built: /context loads his full life and work state; /today pulls calendar, tasks, and daily notes into a prioritized plan; /trace tracks how an idea has evolved over time; /connect bridges two domains using the vault's link graph; /ghost answers a question the way Vin would; /challenge pressure-tests his current beliefs. These turn Claude Code from a generic assistant into a deeply personalized thinking partner.
4\. Markdown Files as the Foundation of the AI Era
I make the case that if you are serious about using LLMs to their full potential, a centralized markdown-based note-taking system is table stakes. Writing and reflection are the raw material; files are perfect memory where human recall is flawed; and the 99.99% of people who skip this step are leaving massive value on the table.
The #1 tool to find startup ideas/trends - https://www.ideabrowser.com/
LCA helps Fortune 500s and fast-growing startups build their future - from Warner Music to Fortnite to Dropbox. We turn 'what if' into reality with AI, apps, and next-gen products https://latecheckout.agency/
The Vibe Marketer - Resources for people into vibe marketing/marketing with AI: https://www.thevibemarketer.com/
FIND ME ON SOCIAL
X/Twitter: https://twitter.com/gregisenberg
Instagram: https://instagram.com/gregisenberg/
LinkedIn: https://www.linkedin.com/in/gisenberg/
FIND VIN ON SOCIAL
X: https://x.com/internetvin
Youtube: https://www.youtube.com/@otherstuffpod
Personal Website: https://internetvin.com/Index

37
Templates/Daily Note.md Normal file
View File

@ -0,0 +1,37 @@
# {{date:dddd, MMMM D, YYYY}}
## 🧭 Intentions
-
## 📋 Today's Focus
> One sentence: What does a good day look like?
## 💬 Journal / Reflections
> What happened? What did I learn? What's unresolved?
### Must Do
- [ ]
- [ ]
### Should Do
- [ ]
### Nice to Do
- [ ]
## 📥 Inbox / Captures
-
## 🤝 Meetings & Calls
| Time | With | Notes |
|------|------|-------|
| | | |
## 🔗 Linked Notes
## ⚡ Evening Review
- Energy level (15):
- Did I move the needle on my #1 priority?
- Tomorrow's top priority:

View File

@ -0,0 +1,43 @@
---
## type: meeting date: "{{date}}" time: "" duration: "" attendees:
company: "" project: "" meeting_type: "" source: "" tags:
- meeting
---
# {{title}}
## Context
- **Purpose:**
- **Company / Organisation:**
- **Meeting Type:** _discovery | follow-up | strategy | pitch | workshop | networking | internal_
## Summary
<!-- 2-3 sentence high-level summary of the meeting -->
## Key Points
## Decisions Made
## Action Items
- [ ] **[Owner]** — Task description — _Due: YYYY-MM-DD_
- [ ] **[Owner]** — Task description — _Due: YYYY-MM-DD_
## Open Questions
## Follow-Up
- **Next Meeting:**
- **Next Steps:**
## Relevant Links
## Transcript
<!-- Paste full Otter/Jamie transcript below this line -->

View File

@ -0,0 +1,23 @@
---
type: reddit date: "{{date}}" subreddit: "" author: "" url: "" topic: "" tags:
- reddit
---
# {{title}}
## Why I Saved This
<!-- One or two sentences on why this is relevant to you -->
## Key Takeaways
## Notable Comments
## Related Notes
## Original Content
<!-- Paste or clip the post content below this line -->